2024-07-08 16:29:15 发布
网友
我尝试使用python复制文件/目录树。在
是否可以使用copytree复制以foo结尾的所有内容?在
有一个忽略模式模式函数,我能给它一个否定的正则表达式吗?python支持它们吗?在
例如
复制树(src,dest,False,ignore_pattern('!*.foo')) 哪里!不是以foo结尾的任何东西。 谢谢。在
def documentation(format): call(['make', format, '-C', DOC_SOURCE_DIR]) if (os.path.exists(DOC_DIR)): shutil.rmtree(DOC_DIR) ignored = ['doctrees'] shutil.copytree('{0}/build/'.format(DOC_SOURCE_DIR), DOC_DIR, ignore=shutil.ignore_patterns(*ignored))
基于unutbu的答案。下面获取所有文件的列表,然后删除与“ignore_patterns”匹配的文件,然后将其作为要忽略的文件列表返回。也就是说,它执行双重否定,只复制所需的文件。在
import glob, os, shutil def copyonly(dirpath, contents): return set(contents) - set( shutil.ignore_patterns('*.py', '*.el')(dirpath, contents), ) shutil.copytree( src='.', dst='temp/', ignore=copyonly, ) print glob.glob('temp/*')
shutil.copytree有一个^{} keyword。ignore可以设置为任何可调用的。给定要访问的目录及其内容的列表,可调用函数应返回要忽略的目录和文件名序列。在
shutil.copytree
ignore
例如:
import shutil def ignored_files(adir,filenames): return [filename for filename in filenames if not filename.endswith('foo')] shutil.copytree(source, destination, ignore=ignored_files)
基于unutbu的答案。下面获取所有文件的列表,然后删除与“ignore_patterns”匹配的文件,然后将其作为要忽略的文件列表返回。也就是说,它执行双重否定,只复制所需的文件。在
shutil.copytree
有一个^{ignore
可以设置为任何可调用的。给定要访问的目录及其内容的列表,可调用函数应返回要忽略的目录和文件名序列。在例如:
相关问题 更多 >
编程相关推荐