目标
使用Python,对某个文件夹下的某类文件进行批量操作,如修改文件后缀,复制,删除等
找到目标文件
# 导入相关模块
import os
import glob
import shutil
# 赋值指定文件夹
src_dir = 'c:\\testdata\\文件夹1'
# 搜索后缀为'doc'的Word文件
files = glob.glob('*.doc', root_dir=src_dir)
print(files)
['word文件1.doc', 'word文件2.doc']
# 扩展到子目录
files = glob.glob('**\\*.doc', root_dir=src_dir, recursive=True)
print(files)
['word文件1.doc', 'word文件2.doc', '部门1\\word文件1.doc', '部门1\\word文件3.doc', '部门2\\部门2-1\\word文件5.doc']
修改后缀
# 循环处理每个文件
for file in files:
# 数字3是原文件后缀doc的长度,注意带负号
new_file = file[:-3] + 'docx'
os.rename(os.path.join(src_dir, file), os.path.join(src_dir, new_file))
# 为了后续测试代码运行,把后缀再改回来
os.rename(os.path.join(src_dir, new_file), os.path.join(src_dir, file))
复制到新的文件夹
dst_dir = 'c:\\testdata\\文件夹2'
if not os.path.isdir(dst_dir):
os.makedirs(dst_dir)
# 多种模式,保留需要的一种
for file in files:
# 模式1:都复制到目标文件夹中,文件名重复的,会被更新,只保留最后一个
#shutil.copy(os.path.join(src_dir, file), dst_dir)
# 模式2:保留子文件夹
if file.find('\\') > 0:
new_dir = os.path.join(dst_dir, os.path.split(file)[0])
if not os.path.isdir(new_dir):
os.makedirs(new_dir)
shutil.copy(os.path.join(src_dir,file), os.path.join(dst_dir, file))
删除
# 测试时,请注意做好备份
for file in files:
#os.remove(os.path.join(src_dir, file))
pass
网友评论