最近收集图片,一个文件夹中有5000张图片文件,图片名称为字符,需要将同一内容的图片放到一个文件。判断条件是图片名前16位字符是相同的。加一条:此python代码放到任一文件夹下都可执行。
步骤:
- 获取当文件夹路径
- 获取当文件夹中的所有文件与文件夹,存在列表中file_or_folder[]
- 判断file_or_folder列表中每一个元素,isfile则移入以图片前16位字符命名的文件夹中,isfolder则pass
3.1 新建一存储文件夹后:整理后,务必确保“整理后”是空的
3.2 isfile 拆出文件名,并取前16位
3.3 在“整理后”文件夹中新那子前16位字符命名的文件夹,并将16位字符存入到set中,方便第二个文件移动时,检查子文件夹是否已存在了。
3.4 移动图片到相应的前16位字符命名的文件夹中
此程序用到的知识点:
- python对文件与文件夹的操作,用到python内置模块OS模块,shutil模块
- 字符串操作,python内置模块
使用方法:
将保存此代码的py文件放到图片文件夹,编辑器打开文件,运行就行了。
# -*- conding = utf8 -*-
#athur : 大白python
#time : 20190723
#title : python整理文件夹中的文件
#简书 :大白python
import os
import shutil
#1. 获取当文件夹路径
current_path = os.getcwd()
print("开始处理文件夹中的图片:"+current_path)
#2. 获取当文件夹中的所有文件与文件夹,存在列表中file_or_folder[]
file_or_folder = os.listdir(current_path)
#print(file_or_folder)
#3. 判断file_or_folder列表中每一个元素,isfile则移入以图片前16位字符命名的文件夹中,isfolder则passabs
# 3.1 新建一存储文件夹后:整理后,务必确保“整理后”是空的
#os.makedirs(current_path + "\\"+"整理后")
set = []
for filename in file_or_folder:
if os.path.isfile(filename) and filename.split(".")[1] == "jpg" :
#3.2 isfile 拆出文件名,并取前16位
pic_name = filename.split(".")[0]
print("正在移动图片:"+ filename)
string16 = pic_name[:16]
#3.3 在“整理后”文件夹中新那子前16位字符命名的文件夹,并将16位字符存入到set中
if string16 in set:
#存在文件夹
#3.4 移动图片到相应的前16位字符命名的文件夹中
shutil.move(current_path +"\\"+ filename,current_path + "\\"+"整理后"+ "\\"+ string16)
else:
#不存在文件夹创建文件夹
set.append(string16)
os.makedirs(current_path + "\\"+"整理后"+ "\\"+ string16)
#3.4 移动图片到相应的前16位字符命名的文件夹中
shutil.move(current_path +"\\"+ filename,current_path + "\\"+"整理后"+ "\\"+ string16)
else:
print("不是\"JPG\"图片")
python整理文件夹中的文件.jpg
PS: 改为通用程序,只需将“string16”改为以本地时间为命名就可以通用了,用文件名的前16位字符命名文件夹是我需要的格式。
另:此程序只能在Windows下使用,在NAS文件夹上也不能用。
100分大神,80分大牛,60分大白,对我,够用,能用,就好
网友评论