使用Python批量操作文件

目标

使用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

你可能感兴趣的:(使用Python批量操作文件)