| by 鲍 建伟 | No comments

用Python让我省力(1)-整理文件

今天是这么个情况,我以前用Google的亲儿子时,在Google相册上传了很多照片,今天我用Google的账号信息导出功能,导出了相册,解压完毕之后发现很痛苦,整理起来很麻烦,先看个图:

解压后的文件全是按照时间建立文件夹,每个文件夹内保存当日的图片,这就有点麻烦了,我不喜欢这样的文件保存方式,我更喜欢这样的:

本来想用搜索图片后缀,然后剪切文件到新文件夹的方式整理的,但Windows10自带的搜索太过乐色,我又没安装everything这种大杀器,所以我就用python写了个小脚本,代码如下:

import os.path
import shutil
import re

target_folder = input('please input your folder dir to be operated:')
dst = input('please input your new folder dir:')
exclude_file_suffix = input('please input your exclude file suffix(separated by ";"):')
suffix_list = exclude_file_suffix.split(';')
all_file_count = 0
move_done_file = 0
for parent, _, file_names in os.walk(target_folder):
    for filename in file_names:
        if exclude_file_suffix == '':
            pass
        else:
            for item in suffix_list:
                if re.findall('(.*){}'.format(exclude_file_suffix), filename):
                    continue
        src = os.path.join(parent ,filename)
        try:
            shutil.move(src, dst)
            all_file_count = all_file_count + 1
            move_done_file = move_done_file + 1
        except shutil.Error as e:
            all_file_count = all_file_count + 1
            print("filename already exists, please rename this file.")
            print("Duplicate file full path:" + os.path.join(parent, filename))

print('all file count:' + str(all_file_count))
print('move success file count:' + str(move_done_file))

target_folder 是需要整理的文件夹路径,dst是整理后文件保存的路径,exclude_file_suffix是整理文件过程中需要略过的文件后缀名,这里传入的参数可以是多个,按照分号分隔各个后缀名,例如:.json;.js。

因为Google相册给我打包好的zip文件中有太多的.json文件,这些文件记录了一部分拍摄时的位置信息,设备信息等,我完全不需要这些文件,所以可以直接排除。综上,我传入的参数截图如下:

完毕, 就这么几行就搞定了,果然是人生苦短我用python啊。。。

发表评论