在Python中递归复制文件

2024-09-28 23:21:00 发布

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

但我也把它的文件复制到了一个完整的目录里。在

我使用了一个简单的调用cp -rf dir destos.system,但我不能单独打印每个文件名。在

然后,我考虑用os.system递归调用ls来列出eash目录文件,保存整个字符串,将它们拆分到一个数组中,并实现一个for循环来运行操作系统(“cp”file1+“des/”)并打印文件名,但看起来要做很多工作。在

有什么更好的办法来实现这个目标?在


Tags: 文件字符串目录foros文件名dir数组
1条回答
网友
1楼 · 发布于 2024-09-28 23:21:00

您可以使用os.walk获取整个目录列表,并使用该列表迭代地复制所有文件。有点像

file_paths = [os.path.join(root, f) for root, _, files in os.walk('.') for f in files]
for path in file_paths:
    print path
    shutil.copy(path, target)

或者根据MatthewFranglen的评论,你可以做shutil.copytree(src, dst)。这也允许你忽略一些事情,但是你需要定义一个函数来完成,而不是在列表理解中使用if。在

^{pr2}$

from shutil import copytree, ignore_patterns
ignore_func = ignore_patterns('.DS_Store', '*.txt')  # ignore .DS_Store and *.txt files
copytree('/path/to/dir/', '/other/dir', ignore=ignore_func)

相关问题 更多 >