在工作中难免会遇到需要批量整理文件的情况,当需要从一堆文件中将部分文件批量地转移时,如果手工一一转移难免浪费时间,此时我们就可以考虑用脚本来转移文件了。
例如,李华的朋友帮他处理了一批图像,但是朋友将生成数据和原始数据放在了同一目录下,但是老师让李华把文件分别放在两个文件夹,这时候写英文作文的能力肯定是帮不了他了,他可以尝试用Python脚本来批处理。
当然,批处理的前提条件是这两种文件在命名之间有明显区别,例如:原始数据的命名规则是:编号+_src.jpg,而输出数据的命名规则是编号+_res.jpg。又或者是原始数据为jpg格式,而输出数据保存成了png格式。根据前面的例子,可以直接上代码;代码中主要用到了os、shutil和glob三个库
import os
import shutil
import glob
def my_move(srcfn,dstdir): ##定义移动函数,参数为待移动的文件路径和目标目录
if not os.path.isfile(srcfn): ##判断文件是否存在
print('srcfn error')
else:
srcdir,fn=os.path.split(srcfn) ##分离绝对路径和相对路径,获得文件名
if not os.path.exists(dstdir): ##如果目录不存在,创建目录
os.makedirs(dstdir)
dstfn=dstdir+fn ##生成目录下的文件名
shutil.move(srcfn,dstfn) ##移动
fns=glob.glob('H:/dataset/*.jpg') ##获取当前目录下所有jpg格式的文件
src_fns=[fn for fn in fns if fn[-7:-4]=='src'] ##获取当前目录下的所有原始数据,存为一个list
for ind in range(len(src_fns)): ##循环移动所有文件
my_move(src_fns[ind],'H:/dataset/src/')
已完。。