2024-09-28 23:21:00 发布
网友
但我也把它的文件复制到了一个完整的目录里。在
我使用了一个简单的调用cp -rf dir dest和os.system,但我不能单独打印每个文件名。在
cp -rf dir dest
os.system
然后,我考虑用os.system递归调用ls来列出eash目录文件,保存整个字符串,将它们拆分到一个数组中,并实现一个for循环来运行操作系统(“cp”file1+“des/”)并打印文件名,但看起来要做很多工作。在
有什么更好的办法来实现这个目标?在
您可以使用os.walk获取整个目录列表,并使用该列表迭代地复制所有文件。有点像
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。在
MatthewFranglen
shutil.copytree(src, dst)
与
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)
您可以使用
os.walk
获取整个目录列表,并使用该列表迭代地复制所有文件。有点像或者根据
^{pr2}$MatthewFranglen
的评论,你可以做shutil.copytree(src, dst)
。这也允许你忽略一些事情,但是你需要定义一个函数来完成,而不是在列表理解中使用if。在与
相关问题 更多 >
编程相关推荐