美文网首页
使用Python批量操作文件

使用Python批量操作文件

作者: python4work | 来源:发表于2022-05-13 13:32 被阅读0次

    目标

    使用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批量操作文件

          本文链接:https://www.haomeiwen.com/subject/jgoyurtx.html