2012-09-14 65 views
0

打開一個文件進行讀取所以我有問題,所以我決定只是嘗試的os.isfile斷言:Python的os.isfile斷言失敗

from Android_API_Parser import Android_API_Parser 
import os.path 

assert os.path.isfile("D:\Work\Python Workspace\Android_API_Parser\test.txt") 

tester = Android_API_Parser() 
tester.setFile("test.txt") 
tester.parse() 

它的失敗斷言:

Traceback (most recent call last): 
    File "D:\Work\Python Workspace\Android_API_Parser\src\Android_API_Tester.py", line   
    9, in <module> 
assert os.path.isfile("D:\Work\Python Workspace\Android_API_Parser\test.txt") 
AssertionError 

我已經打開的路徑,我想打開該文件,並粘貼下面吧:

D:\Work\Python Workspace\Android_API_Parser\test.txt 

任何想法,爲什麼它甚至不及格斷言?除非我真的很累,否則文件顯然位於那裏。我甚至用「/」和「\」來嘗試,即使包含轉義字符。

回答

3

string literal中,您必須使用另一個反斜槓來跳轉反斜槓,使用原始字符串或使用正斜槓。否則,"\t"變成只包含製表符的字符串。

嘗試任何的:

assert os.path.isfile("D:\\Work\\Python Workspace\\Android_API_Parser\\test.txt") 
assert os.path.isfile(r"D:\Work\Python Workspace\Android_API_Parser\test.txt") 
assert os.path.isfile("D:/Work/Python Workspace/Android_API_Parser/test.txt") 
assert os.path.isfile(os.path.join("D:", "Work", "Python Workspace", 
            "Android_API_Parser", "test.txt")) 

的文件也可能不是一個普通的文件。使用os.path.exists來查看它是否存在。

您也許沒有足夠的權限查看該文件或您期望的文件名may be localized。要進行調試,運行:

path = ["Work", "Python Workspace", "Android_API_Parser", "test.txt"] 
f = 'D:' 
for p in path: 
    f = os.path.join(f, p) 
    print(f) 
    assert os.path.exists(f) 
assert os.path.isfile(f) 
+0

我試過了,即使使用了反斜槓。 :/ 我試着單獨運行所有這四個斷言,並且它全部失敗。 此外,我認爲它可能不喜歡PATH名稱中的空格,所以我擺脫了這一點,但它仍然不喜歡它。 – TSM

+0

@TSM:空間在這樣的路徑中完美無瑕。 philag的回答對於你發佈的問題肯定是正確的。也許文件真的不在那裏?你嘗試過一個更簡單的路徑嗎? –

+0

@TSM嗯,它不會與你發佈的版本,這是肯定的。我用一個調試程序更新了答案。如果你運行它,你會得到什麼輸出? – phihag