如何使用Python从多个子文件夹复制多个特定类型的文件?

2024-03-28 22:38:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从十几个子文件夹复制多个.mp4和.CR2文件。我尝试了多种代码变体,希望从头开始

import os
import shutil
#os.chdir('C:\\')

dir_src = 'D:\\Users\\Tibi\\Pictures'
dir_dst = 'D:\\test'

#while True:
#    try:
#        for folder in os.walk(dir_src):
#            print(folder)
#            for filename in os.listdir(dir_src):
#                if filename.endswith('.CR2'):
#                    shutil.copy(dir_src + '\\' + filename, dir_dst)
#                print(filename)
#    except UnicodeEncodeError:
#        print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>File %s was Skipped!<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" %filename)
import pathlib
import glob

dir_src = pathlib.Path('D:\\Users\\Tibi\\Pictures\\Move')
dir_dst = pathlib.Path('D:\test')

for file in dir_src.rglob('*.CR2'):
    shutil.copy(dir_src + '\\' + file, dir_dst)
    print("Current File is: %s" % file)

我已经尝试了注释掉的代码,但下面没有代码


Tags: 代码inimportsrcforosdirfilename
1条回答
网友
1楼 · 发布于 2024-03-28 22:38:38

这应该满足您的要求,但它假定没有文件具有相同的名称:

import os
import shutil

source_dir = r"/Users/ThatOtherBatman/Foo/"
target_dir = r"/Users/ThatOtherBatman/Bar/"
extensions = (".mp4", ".cr2")

for directory, _, file_names in os.walk(source_dir):
    for file_name in file_names:
        if file_name.lower().endswith(extensions):
            source_path = os.path.join(directory, file_name)
            target_path = os.path.join(target_dir, file_name)
            print("Moving {} to {}".format(file_name, target_dir))
            shutil.copy(source_path, target_dir)

os.walk是您希望用来递归搜索目录的内容。然后只需检查文件扩展名是否在您想要的扩展名中,如果是,请复制文件

相关问题 更多 >