gpt4 book ai didi

Python - shutil.copytree 函数后的空目录和子目录

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:09 24 4
gpt4 key购买 nike

这是我正在编写的程序的一部分。目标是提取所有 GPX 文件,例如 G:\(在命令行中用 -e G:\指定)。它将创建一个“Exports”文件夹并在那里递归地转储所有具有匹配扩展名的文件。很好用, friend 帮我写的!!问题:不包含 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 的目录才会在那里? :)

最佳答案

如果我没理解错的话,你想删除空文件夹?如果是这种情况,您可以执行自下而上的删除文件夹操作——对于任何不为空的文件夹,该操作都会失败。像这样的东西:

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

关于Python - shutil.copytree 函数后的空目录和子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18165343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com