【发布时间】:2017-04-07 04:15:57
【问题描述】:
我刚开始使用 Spyder 2.3.0 和 Python 3.4.1
我有一个带有子目录的目录结构。
与网络上的其他示例不同,我想选择多种文件类型并复制目录结构。我在下面尝试过,它可以工作,但一次只需要一种文件类型和“copytree's”(它会很慢)。
有没有办法或不同的方式来简化它以使其更快?
我想我想做的是:
制作文件类型和位置的综合列表(遍历目录结构)
例如以
结尾fileExt = [".txt", ".doc", ".docx", ".xls",".xlsx", ".ppt", ".pptx", ".m", ".xmcd", ".pdf " ]
然后使用该列表只需“shutil.copytree”
非常感谢任何建议。
srcDir = 'c:/a/src/dir/'
dirName = 'c:/a/dest/dir/'
import os
import shutil
##################################################################################
dstDir = os.path.abspath(dirName)
def ignore_list(path, files):
filesToIgnore = []
for fileName in files:
fullFileName = os.path.join(os.path.normpath(path), fileName)
if not os.path.isdir(fullFileName) and not fileName.endswith('.txt') :
filesToIgnore.append(fileName)
return filesToIgnore
# start of script
shutil.copytree(srcDir, dstDir, ignore=ignore_list)
####################################################################################################################################################################
dstDir = os.path.abspath(dirName)
def ignore_list(path, files):
filesToIgnore = []
for fileName in files:
fullFileName = os.path.join(os.path.normpath(path), fileName)
if not os.path.isdir(fullFileName) and not fileName.endswith('.docx') :
filesToIgnore.append(fileName)
return filesToIgnore
# start of script
shutil.copytree(srcDir, dstDir, ignore=ignore_list)
####################################################
复制并粘贴更改的“endswith('.docx') :”
【问题讨论】:
-
也许 fnmatch 有帮助。请看这里:docs.python.org/2/library/fnmatch.html
标签: python operating-system shutil copytree