10 個のサブディレクトリ ("1"、"2"、... "10" という名前) を含むディレクトリ ("Top" という名前) があり、これらの各サブディレクトリには多数のテキスト ファイルが含まれています。サブディレクトリ 1 のファイルを開かずに、サブディレクトリ 2 ~ 10 のすべてのファイルを開くことができるようにしたいと考えています (次に、サブディレクトリ 2 のファイルを開かずに、サブディレクトリ 1 と 3 ~ 10 のファイルを開きます。前方へ)。現在、次のコードを使用して、サブディレクトリ 1 のファイルを読み取らずに、サブディレクトリ 2 ~ 10 のファイルを読み取ろうとしています。
import os, fnmatch
def findfiles (path, filter):
for root, dirs, files in os.walk(path):
for file in fnmatch.filter(files, filter):
yield os.path.join(root, file)
for textfile in findfiles(r'C:\\Top', '*.txt'):
if textfile in findfiles(r'C:\\Top\\1', '*.txt'):
pass
else:
filename = os.path.basename(textfile)
print filename
問題は、ここの if ステートメント ("if textfile in findfiles [...]") では、サブディレクトリ 1 内のファイルをテキスト ファイル リストから除外できないことです。サブディレクトリ 2 ~ 10 にあるこれらのファイルのファイル名のみを出力するようにコードを変更する方法を知っている人はいますか? この質問についてアドバイスをいただけると大変助かります。
編集:
他の人が役立つかもしれない場合に備えて、最終的にこの問題を解決するために使用したコードを投稿したかったのです。
import os, fnmatch, glob
for file in glob.glob('C:\\Text\\Digital Humanities\\Packages and Tools\\Stanford Packages\\training-the-ner-tagger\\fixed\*\*'):
if not file.startswith('C:\\Text\\Digital Humanities\\Packages and Tools\\Stanford Packages\\training-the-ner-tagger\\fixed\\1\\'):
print file