Python让图片名更有序
快速重命名(右键法) 去除空格和括号 加前缀 提取或删除指定的图片
1.删除特殊字符
import os
path = "D:/"
#删除特殊字符
for root, dirs, files in os.walk(path):
for name in files:
print(name)
NewFileName = name.replace(")", '')
NewFileName = NewFileName.replace("(", '')
NewFileName = NewFileName.replace(" ", '')
NewFileName = os.path.join(root, NewFileName)
print(NewFileName)
os.rename(os.path.join(root, name), os.path.join(root, NewFileName))
print("yes")
2.增加前缀
import os
path = "C:/"
#增加前缀
for root, dirs, files in os.walk(path):
for name in files:
pr='0'
os.rename(os.path.join(root, name), os.path.join(root, pr+name))
print("yes")
3.删除指定文件
import os
#定义一个返回所有图片绝对路径的函数
def all_path(dirname):
result = []
for maindir, subdir, file_name_list in os.walk(dirname):
for filename in file_name_list:
apath = os.path.join(maindir, filename)
result.append(apath)
return result
def main():
path = 'D:/'
list1 = all_path(path)
remove_path = 'D:/'
with open(remove_path) as f:
list2 = list(map(lambda s:s.strip(), f.readlines()))
#得到所有图片的名字并添加到list3中
list3 = []
for i in range(len(list1)):
line = os.path.split(list1[i])[-1].split('/')[0]
fname = os.path.splitext(line)[0]
list3.append(fname)
#list3.append(line)#带扩展名就用这个,不带用上面的
#将需要删除的图片的路径添加到list4中
list4 = []
for j in range(len(list3)):
for k in range(len(list2)):
if list3[j] == list2[k]:
out_path = list1[j]
list4.append(out_path)
for n in range(len(list4)):
os.remove(list4[n])
if __name__ == '__main__':
main()
print("yes")
4.复制指定文件
import os
import shutil
#定义一个返回所有图片绝对路径的函数
def all_path(dirname):
result = []
for maindir, subdir, file_name_list in os.walk(dirname):
for filename in file_name_list:
apath = os.path.join(maindir, filename)
result.append(apath)
return result
def main():
#原始图片位置
path = 'D:/'
list1 = all_path(path)
#复制图片路径,当前文件下新建一个目录
ISexists=os.path.exists('.\image')
if not ISexists:
os.makedirs('.\image')
new_path='.\image'
#存放复制或者移除文件名字的txt
remove_path = 'D:/'
with open(remove_path) as f:
list2 = list(map(lambda s:s.strip(), f.readlines()))
#得到所有图片的名字并添加到list3中
list3 = []
for i in range(len(list1)):
line = os.path.split(list1[i])[-1].split('/')[0]
#fname = os.path.splitext(line)[0]
#list3.append(fname)
list3.append(line)#带扩展名就用这个,不带用上面的
#将需要删除的图片的路径添加到list4中
list4 = []
for j in range(len(list3)):
for k in range(len(list2)):
if list3[j] == list2[k]:
out_path = list1[j]
list4.append(out_path)
#移除指定路径的图片
'''for n in range(len(list4)):
os.remove(list4[n])'''
#把特定名字(带扩展名)的复制到新路径
for root,dirs,files in os.walk(path):
for file in files:
for n in range(len(list2)):
if list2[n] == file:
print(file)
shutil.copy(os.path.join(root,file),new_path)
if __name__ == '__main__':
main()
print("yes")