Pythonshutil.copytree公司递归提取未选择

2024-09-29 23:19:06 发布

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

我曾经尝试过用下面的代码将文件从存储介质导出到我的计算机。成功了。在这个过程中,我一定修改了它,因为它不是递归地获取具有我想要的扩展名的文件,而是在源代码处获取所有文件。在

def xxxlist(ext, dirname, names):
    ext = ext.lower() 
    for name in names:
        if name.lower().endswith('.xxx'): # This is the file type I need.
            print(os.path.join(dirname, name))

def xxxextract(src,dest):
        print 'Executing Extraction (may take a minute)...'
        dest_dir = os.path.dirname(dest)
        try:
            os.makedirs(dest_dir)
        except os.error as e:
            pass 
            shutil.copytree(src,dest)
        print "Successfully exported..." 
        os.path.walk(path, xxxlist, '.xxx')

下面是程序的进一步部分。调用函数:

^{pr2}$

如你所见,它执行了一个提取,然后列出了我想要的所有xxx文件。但是当我检查'Exports'文件夹时,所有的都被转移了,而不仅仅是通过那个扩展名。我怎样才能把它修好shutil.copytree公司我想要扩展名的文件?在


Tags: 文件pathnamesrcnamesosdefdir
1条回答
网友
1楼 · 发布于 2024-09-29 23:19:06

找到了解决办法!Jon Clements告诉我创建一个忽略列表并否定它。在代码中做梦的蓝瓜帮我制作了一个:

def ignore_list(path, files):
   ret = []
   for fname in files:
        fullFileName = os.path.normpath(path) + os.sep + fname
   if not os.path.isdir(fullFileName) \
        and not fname.endswith('zdt'):
        ret.append(fname)
   return ret

这可以与shutil.copytree(src,dst,ignore=ignore_list)一起使用。这是一个很好的方法:最初尝试了lambda函数,但希望导出保持其文件夹结构。在

相关问题 更多 >

    热门问题