我想排除目錄“dir3_txt”,以便我只能files('.txt')從其他目錄中捕獲。我試圖排除如下所示的目錄,但無法弄清楚如何將所有具有 .txt 的文件作為 ext 其他文件,以便在dir3_txt下面使用它:for root, dirs, files in os.walk('.'): print (root) dirs[:] = [d for d in dirs if not d.startswith('dir3')] for file in files: print (os.path.join(root, file))我正在考慮 glob(從堆棧本身獲得),但不確定如何調整 glob 以使用它。for file in os.walk('.'): for txt in glob(os.path.join(files[0], '*.txt')): print(txt)我經歷了os.walk中的排除目錄,但是提供的解決方案對我沒有幫助,它僅說明跳過目錄也無濟于事,因為我需要從其他目錄中獲取文件,如果僅使用glob可以做到這一點更好?
2 回答

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
一個簡單的解決方案就是對由os.walk以下方法返回的目錄路徑和文件進行字符串比較:
for root, dirs, files in os.walk('.'):
if "/dir3_txt/" not in root:
for file in files:
if file.endswith(".txt"):
print (os.path.join(root, file))

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
for root, dirs, files in os.walk('.'):
print (root)
dirs[:]= [d for d in dirs if d[:4]!='dir3']
for file in files:
if file[-4:]=='.txt':
print (os.path.join(root, file))
我現在沒有任何系統可以測試這一點,因此,如果有任何問題,請發表評論。
編輯:
現在,它僅檢測“ .txt”文件。
添加回答
舉報
0/150
提交
取消