2014-01-21 62 views
1

下面這段代碼工作正常,讀取指定目錄中的所有文本文件:Python不承認在目錄文本文件

files_ = glob.glob('D:\Test files\Case 1\*.txt') 

但是,當我改變路徑到另一個目錄,它給了我一個空的文件列表:

files_ = glob.glob('D:\Test files\Case 2\*.txt') 
print files_ >> [] 

這兩個目錄都包含一對文本文件。儘管文本文件的名稱和大小不同。 它確實是有線的,我想不出任何解決問題的辦法。有沒有人遇到過這樣的問題?

+1

這個目錄上'os.listdir'的輸出是什麼? – roippi

+0

實際路徑是'D:\ Test files \ B1 \ 1rgb'和'os.listdir'給出錯誤:'WindowsError:[錯誤123]文件名,目錄名稱或卷標語法不正確:'D:\ \ Test files \\ B1 \ x01rgb /*.*'' – PyLearner

+1

您需要使用正斜槓,例如''D:/ Test files/Case 2/*。txt'',一個原始字符串前綴,比如'r' D:\ Test files \ Case 2 \ *。txt'',或者轉義字符串中的反斜槓字符,例如D:\\ Test files \\ Case 2 \\ *。txt'' for Windows路徑。此外,如果它們包含空格字符(例如'r'「D:\ Test files \ Case 2 \ *。txt」'「),則可能還需要將它們放在雙引號'''字符中。 – martineau

回答

2

你需要或者逃生您的反斜槓:

files_ = glob.glob('D:\\Test files\\Case 2\\*.txt') 

或指定的字符串是原料字符串(意爲反斜槓不應該被專門解釋):

files_ = glob.glob(r'D:\Test files\Case 2\*.txt') 

什麼碰巧打破你的第二個glob就是\1變成了ASCII控制字符\x01。該錯誤消息包含一個線索是:

WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: 'D:\\Test files\\B1\x01rgb/*.*' 

注意到\1如何變成文字\x01。你的第一個目錄工作的原因是你基本上很幸運,並沒有意外地指定任何特殊字符:

'\T' 
Out[27]: '\\T' 

'\B' 
Out[28]: '\\B' 

'\1' 
Out[29]: '\x01' 
+0

非常感謝您的解釋:) – PyLearner