这是我正在编写的程序的一部分。目标是提取所有 GPX 文件,例如在 G:\(在命令行中使用 -e G:\ 指定)。它将创建一个“Exports”文件夹并在那里递归地转储所有具有匹配扩展名的文件。很好用,朋友帮我写的!!问题:不包含 GPX 文件的目录的空目录和子目录。
import argparse, shutil, os
def ignore_list(path, files): # This ignore list is specified in the function below.
    ret = []
    for fname in files:
         fullFileName = os.path.normpath(path) + os.sep + fname
         if not os.path.isdir(fullFileName) \
            and not fname.endswith('gpx'):
            ret.append(fname)
         elif os.path.isdir(fullFileName) \ # This isn't doing what it's supposed to.
            and len(os.listdir(fullFileName)) == 0:
            ret.append(fname)
    return ret
def gpxextract(src,dest):    
    shutil.copytree(src,dest,ignore=ignore_list)
稍后在程序中,我们要求extractpath():
if args.extractpath:
    path = args.extractpath
    gpxextract(extractpath, 'Exports')
所以上面的提取确实有效。但是len上面的函数调用旨在防止创建空目录并且没有。我知道最好的方法是在导出后os.rmdir以某种方式进行,虽然没有错误,但文件夹仍然存在。
那么我怎样才能成功地修剪这个 Exports 文件夹,以便只有带有 GPX 的目录才会在那里呢?:)