这是我正在撰写的计划的一部分。目标是提取所有GPX文件,例如G:\(在命令行使用-e G:\指定)。它将创建一个'Exports'文件夹并转储所有具有匹配扩展名的文件,递归即可。效果很棒,朋友帮我写了!!问题:没有包含GPX文件的dirs的空目录和子目录。
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
函数调用旨在防止创建空目录而不是。我知道最好的方法是{<1}}以某种方式导出后,当没有错误时,文件夹仍然存在。
那么我怎样才能成功修剪这个Exports文件夹,这样只有带GPX的dirs会在那里? :)
答案 0 :(得分:1)
如果我理解正确,您想要删除空文件夹吗?如果是这种情况,您可以执行自下而上的删除文件夹操作 - 对于任何非空的文件夹,操作都将失败。类似的东西:
for root, dirs, files in os.walk('G:/', topdown=true):
for dn in dirs:
pth = os.path.join(root, dn)
try:
os.rmdir(pth)
except OSError:
pass