先声明一下,我之前是没学过python的,这个脚本是因为我的npy在实习,但是她不会python所以我就用了一个小时按照网上的函数介绍写了这个脚本。所以有些地方可能写的不太好,请见谅。
代码功能
如图,现在有前缀为NOX的文件若干,想将其按照前缀分开且后缀名BIN和其他后缀名的文件也要分开,处理后放在classified文件夹下,处理后classified文件夹内容如图
import os import shutil def func(): i = 0 n = 0 fileDir: str = os.getcwd() # 获取当前工作文件夹 if not os.path.exists(fileDir + '\' + "classified"): os.mkdir(fileDir + '\' + "classified") # 判断工作文件夹下是否有classified文件夹若没有则创建 for root, dirs, files in os.walk(fileDir): for name in files: # 遍历工作文件夹下所有文件 while name[i] not in ['-', '_', '——', '.']: i = i + 1 if name[i] not in ['.']: na = name[0:i] # 获取文件名下划线之前的部分 if os.path.splitext(name)[-1][1:] in ["bin", "BIN"]: # 若后缀为bin则将文件放入 NOX_BIN 文件夹下 if not os.path.exists(fileDir + '\' + "classified" + '\' + na + '_BIN'): os.mkdir(fileDir + '\' + "classified" + '\' + na + '_BIN') shutil.copyfile(fileDir + '\' + name, fileDir + '\' + "classified" + '\' + na + '_BIN' + '\' + name) print("已将文件" + fileDir + '\' + name + "移动至" + fileDir + '\' + "classified" + '\' + na + '_BIN') n = n + 1 # 统计处理的文件个数 else: if not os.path.exists(fileDir + '\' + "classified" + '\' + na): # 若后缀不为bin则将文件放入 NOX_BIN 文件夹下 os.mkdir(fileDir + '\' + "classified" + '\' + na) shutil.copyfile(fileDir + '\' + name, fileDir + '\' + "classified" + '\' + na + '\' + name) print("已将文件" + fileDir + '\' + name + "移动至" + fileDir + '\' + "classified" + '\' + na) n = n + 1 # 统计处理的文件个数 i = 0 print('共移动{:d}个文件'.format(n)) input('回车退出') # 防止控制台自动关闭 if __name__ == "__main__": func()代码内存在的问题
因为npy那边只要求win下环境所以没做跨平台,如果需要跨平台的话需要os.sep函数,另外因为需要处理的文件中不存在没有后缀名的文件所以没做处理,如果遇到无后缀文件会报错,需更改
while name[i] not in [’-’, ‘_’, ‘——’, ‘.’]:
i = i + 1
处进行文件名结束判断
同名文章也已发布至博客 利用python写一个文件分类程序
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)