これは私が書いているプログラムの一部です。目標は、たとえば G:\ (コマンド ラインで -e G:\ で指定) にあるすべての GPX ファイルを抽出することです。「エクスポート」フォルダーを作成し、そこに一致する拡張子を持つすべてのファイルを再帰的にダンプします。素晴らしい作品、友人がそれを書くのを手伝ってくれました!! 問題: 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
にどうにかすることであり、エラーが発生していない間、フォルダーは残ります。
では、GPX を含むディレクトリのみがそこにあるように、この Exports フォルダーを正常にプルーニングするにはどうすればよいでしょうか? :)