V2.2python 循环控制流:整理文件夹中的文件

2019-07-23  本文已影响0人  大白python
大白python.png

最近收集图片,一个文件夹中有5000张图片文件,图片名称为字符,需要将同一内容的图片放到一个文件。判断条件是图片名前16位字符是相同的。加一条:此python代码放到任一文件夹下都可执行。
步骤:

  1. 获取当文件夹路径
  2. 获取当文件夹中的所有文件与文件夹,存在列表中file_or_folder[]
  3. 判断file_or_folder列表中每一个元素,isfile则移入以图片前16位字符命名的文件夹中,isfolder则pass
    3.1 新建一存储文件夹后:整理后,务必确保“整理后”是空的
    3.2 isfile 拆出文件名,并取前16位
    3.3 在“整理后”文件夹中新那子前16位字符命名的文件夹,并将16位字符存入到set中,方便第二个文件移动时,检查子文件夹是否已存在了。
    3.4 移动图片到相应的前16位字符命名的文件夹中

此程序用到的知识点:

  1. python对文件与文件夹的操作,用到python内置模块OS模块,shutil模块
  2. 字符串操作,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分大白,对我,够用,能用,就好
上一篇 下一篇

猜你喜欢

热点阅读