文章目录
- 0.前言
- 1.源码
- 2.代码解析
- 3.授人以渔
0.前言
最近在学爬虫,从百度搜索上面爬取了一些乱序命名的图片文件,想着把它们重命名一下,类似数据预处理。就弄了一个python脚本来对文件数据进行重命名。
原文件夹信息:
代码实现后文件夹信息:
1.源码
import os
if __name__ == '__main__':
path = r"C:/Users/27801/Documents/Datasets/test_images"
file_names = os.listdir(path)
print(f'file_names:{file_names}')
count = 1
for file in file_names:
print(f"file:{file}")
old_name = os.path.join(path, file)
print(f'old_name:{old_name}')
if os.path.isdir(old_name):
continue
filename = os.path.splitext(file)[0]
filetype = os.path.splitext(file)[1]
new_name = os.path.join(path, '_x_w' + str(count).zfill(5) + filetype)
print(f'new_name:{new_name}')
os.rename(old_name, new_name)
count += 1
2.代码解析
import os
首先是使用import语句导入代码需要用到的os库
path = r"C:/Users/27801/Documents/Datasets/test_images"
这里的path变量是获取需要处理的图片文件所在路径(即文件夹路径),注意斜杠的方向。
file_names = os.listdir(path)
print(f'file_names:{file_names}')
file_names变量是用来获取该文件夹下所有的文件名称(包括文件夹);初期学代码,对于不懂不理解的变量,可以都打印出来看看。
for file in file_names:
print(f"file:{file}")
old_name = os.path.join(path, file)
print(f'old_name:{old_name}')
if os.path.isdir(old_name):
continue
filename = os.path.splitext(file)[0]
filetype = os.path.splitext(file)[1]
new_name = os.path.join(path, '_x_w' + str(count).zfill(5) + filetype)
print(f'new_name:{new_name}')
os.rename(old_name, new_name)
count += 1
for循环遍历所有文件名;
old_name是原来的文件路径 加上文件名 组合而成的,具体到某一张图片文件的路径。 只有这样才可以访问到文件下的一张图片文件;
if语句的意思是,如果是文件夹则跳过;
filename和filetype分别是取到文件的名称和后缀,例如:file=‘193edida.jpg’,则filename=‘193edida’,filetype=‘.jpg’ ;
new_name是重命名的文件名称设置,path是到文件夹的路径,后面是具体的文件名称,文件名称又由两部分组成,文件名和文件后缀,重命名我们要改的就是前面的部分;zfill是设置文件名的长度,若count大小不足5,会用0来填充;
rename函数是将设置好的重命名写入到具体文件上面。
运行输出结果打印:
3.授人以渔
count = 1
count不一定要从1开始,可以设置为任意数字。
new_name = os.path.join(path, '_x_w' + str(count).zfill(5) + filetype)
这部分有两个点可以改。首先是path,这是和原文件名一致的路径,若写一个新的路径,比如new_path,就不是在原来的文件下改了,而是重命名之后再另存到其他文件夹下;
第二个是 ‘_x_w’ + str(count).zfill(5) 这部分,可以不加前面的字符,也可以取消填充zfill函数,就是可以自己设计,这里引入数字是为了不让文件重名,不然会报错。
完成+1 …