2012-08-14 58 views
0
import os 
import glob 

for root, dirs, files in os.walk('F:\\workspace'): 
    for txtfile in glob.iglob(os.path.join(root,'*.txt')): 
     print txtfile 

我可以得到沒有「[]」的文件,如果文件夾名稱只有一個符號「[」或「]」,它可以工作。 我想我以錯誤的方式使用glob.iglob;但我不知道如何在沒有它的情況下獲取我需要的文件。 感謝您的回覆。爲什麼這個Python腳本不能在文件的文件夾名稱中獲得「[]」的文件?

+1

文件「[]」不匹配的glob的「* .txt」,所以當然它不會被退回。 – geoffspear 2012-08-14 12:14:36

+0

你不需要glob。你已經在遍歷根目錄中的每個文件了。只需檢查文件擴展名爲.txt?然後將它們添加到列表中。然後做你想要的東西 – 2012-08-14 12:32:58

回答

0

glob的Python文檔提到它在幕後使用fnmatch.fnmatch()

如果你只是要匹配文件名而不是文件夾名稱,請嘗試以下代碼:

for root, dirs, files in os.walk('D:\\Scratch'): 
    for file in files: 
    if fnmatch.fnmatch(file, '*.txt'): 
     print os.path.join(root, file) 
+0

是的,代碼可以得到我想要的,但是如果我想將這些文件複製到一個文件夾,該怎麼辦呢?fnmatch不能工作。你有什麼想法嗎? – fakelbst 2012-08-14 12:27:30

+0

fnmatch會告訴你文件名是否與「* .txt」匹配,然後在複製文件時可以使用「os.path.join(root,file)」。 – 2012-08-14 12:36:41

+0

非常感謝~~ !!!!我終於解決了這個問題。 – fakelbst 2012-08-14 12:44:55

相關問題