当前位置:首页 > python代码 > 正文内容

Python脚本实现自动检测并重命名非正常图片文件

王铁锹5个月前 (12-15)python代码386

概述

在日常的文件管理和数据处理中,我们可能会遇到一些文件名虽然以特定扩展名结尾,但实际内容并不符合该格式的情况。例如,某些文件可能被错误地标记为 .jpg 文件,但实际上它们可能是其他类型的文件,如视频文件。这种情况下,如果我们依赖文件扩展名来处理文件,就可能导致程序出现错误或无法正确处理文件。

本文介绍的Python脚本旨在解决这一问题,特别是针对被误标为 .jpg 的文件进行检测,并将那些实际上不是图像文件的项重命名为更合适的扩展名(如 .mp4)。这有助于确保目录中的所有文件都能被正确识别和处理。

代码详解

环境准备

首先,我们需要导入必要的模块:

  • os 模块用于与操作系统交互,执行诸如遍历目录、检查文件路径以及重命名文件等操作。

  • PIL.Image 是 Python Imaging Library (Pillow) 中的一部分,提供了打开和验证图像文件的功能。

import os
from PIL import Image

定义目标目录

接下来,定义一个变量 output_dir 来存储要处理的图片文件所在的目录路径。在这个例子中,目录名为 tupian

output_dir = 'tupian'

遍历文件

使用 os.listdir(output_dir) 函数获取指定目录下的所有文件名,并通过循环逐一处理每个文件。为了确保我们只处理 .jpg 文件,使用了字符串方法 endswith() 来检查文件名是否以 .jpg 结尾(忽略大小写)。

for filename in os.listdir(output_dir):
    file_path = os.path.join(output_dir, filename)
    
    if filename.lower().endswith('.jpg'):
        # 处理 .jpg 文件
    else:
        print(f"文件 {filename} 不是 JPG 文件,跳过处理")

图像文件验证

对于每个 .jpg 文件,尝试使用 Image.open() 方法打开它,并调用 img.verify() 方法来检查文件是否为有效的JPEG图像。如果文件不能被正确打开或者验证失败,则捕获异常并认为这不是一个正常的 JPG 文件。

try:
    with Image.open(file_path) as img:
        img.verify()
except (IOError, SyntaxError):
    # 处理非正常图像文件
else:
    print(f"文件 {filename} 是正常的 JPG 文件")

重命名非正常文件

当发现一个文件不是正常的 JPG 文件时,我们希望将其重命名为更合适的名字。这里假设这些文件实际上是视频文件,并将它们的扩展名改为 .mp4。为此,我们使用 os.rename() 函数来更改文件名,并打印一条消息来通知用户发生了什么。

new_filename = filename.rsplit('.', 1)[0] + '.mp4'
new_file_path = os.path.join(output_dir, new_filename)

os.rename(file_path, new_file_path)
print(f"文件 {filename} 不是正常的 JPG 文件,已重命名为 {new_filename}")

总代码如下

import os
from PIL import Image

# 定义目录路径
output_dir = 'tupian'

# 遍历目录中的所有文件
for filename in os.listdir(output_dir):
    file_path = os.path.join(output_dir, filename)
    
    # 检查文件是否为 .jpg 文件
    if filename.lower().endswith('.jpg'):
        try:
            # 尝试打开文件
            with Image.open(file_path) as img:
                img.verify()  # 验证文件是否为有效的图像文件
        except (IOError, SyntaxError):
            # 如果无法打开或验证文件,则认为该文件不是正常的 JPG 文件
            new_filename = filename.rsplit('.', 1)[0] + '.mp4'
            new_file_path = os.path.join(output_dir, new_filename)
            
            # 重命名文件
            os.rename(file_path, new_file_path)
            print(f"文件 {filename} 不是正常的 JPG 文件,已重命名为 {new_filename}")
        else:
            print(f"文件 {filename} 是正常的 JPG 文件")
    else:
        print(f"文件 {filename} 不是 JPG 文件,跳过处理")

效果图如下

代码效果图

扫描二维码推送至手机访问。

微信搜索关注王铁锹公众号或者搜索王秋风。

版权声明:本文由王铁锹个人发布,如需转载请注明出处。

本文链接:https://www.3ban.cn/?id=63

“Python脚本实现自动检测并重命名非正常图片文件” 的相关文章

利用python代码一秒完成指定IP端口扫描

利用python代码一秒完成指定IP端口扫描

引言”学习如何使用Python编写高效的端口扫描脚本,实现对指定IP地址的快速端口扫描。本教程提供详细的代码示例和解释,教你利用Python的强大功能在短短一秒钟内检测出目标主机上所有开放的端口。无论是网络安全测试、服务器管理还是渗透测试准备,这个Python端口扫描器都是不可或缺的工具。获取代码,...

利用python导入flv文本链接随机构造一组网页播放

利用python导入flv文本链接随机构造一组网页播放

引言如下通过导入本地文件夹内的文本,引入链接调用python代码开放5000端口进行网页的flv随机播放,这个代码常用于随机测试flv的直播播放设置,亦或者监控等领域....软件规划如下FLV Video Player 是一个基于Web的简易视频播放器应用,使用Python的Flask框架构建。为用...

巧妙调用接口来判断ip地址

巧用一个使用 Python 发起 HTTPS 请求的例子,旨在获取指定 IP 地址的相关信息!请勿用于生产测试环境!import urllib.request import ssl # 定义请求的URL、方法、应用代码(API密钥)以及查询参数 host&nb...

PHP脚本获取客户端IP地址和解析设备信息

PHP脚本获取客户端IP地址和解析设备信息

在互联网应用中,了解访问者的信息对于网站分析、用户行为跟踪以及安全控制等方面非常重要。PHP是一种广泛使用的服务器端脚本语言,它提供了多种方法来收集和处理来自客户端的数据。下面的代码片段展示了两个PHP函数,它们分别用于获取客户端的IP地址和解析用户的设备信息(包括操作系统和浏览器)。获取客户端IP...

vivo云服务照片视频批量下载代码~

vivo云服务照片视频批量下载代码~

起因,想要从vivo云服务中下载历史上传四五千张照片,结果点击全选之后,居然要我一张一张下载,需要我不停的点保存,这就很抽象了,难道我想要的批量下载不应该是打包成压缩包或者直接批量下载到文件夹中嘛?这点厂商做的甚至不如云盘,细节一点也没打磨!!!第一步打开vivo云服务官网,进入主页,打开控制台进行...