2013-01-16 52 views
0

我試圖使用以下代碼從根目錄打開文件「test_msm8974.sh」,即使該文件存在,我仍然會收到錯誤信息,是嗎?一個更好的方法來實現這個或爲什麼腳本沒有找到它的建議?即使文件存在,腳本也不會識別該文件

try: 
    with open("test_" + target + ".sh") as f: pass 
    copy("test_" + target + ".sh", BUILD_ROOT_DIR) 
except IOError as e: 
    print "test_" + target + ".sh" + " file missing" 
    raise 

我不斷收到以下錯誤,即使該文件存在

Traceback (most recent call last): 
    File "g2g_integration.py", line 612, in <module> 
    main() 
    File "g2g_integration.py", line 430, in main 
    with open("test_" + target + ".sh") as f: pass 
IOError: [Errno 2] No such file or directory: 'test_msm8974.sh' 
+1

而你正在根目錄下正確運行腳本本身? – squiguy

+0

@squiguy - 它是一個錯字...它應該是.sh – user1934146

+0

你沒有在公開中使用路徑。嘗試'print os.getcwd()' –

回答

0

什麼的os.getcwd()輸出?它與您的目標文件是相同的目錄嗎?總之,我寧願使用os.path.existsos.path.isfile(etc),而不是試圖打開文件。此外,您在代碼"test_" + target + ".sh"中有很多重複。你應該把它保存在一個變量中。

+0

'os.path.exists'通常不是很有用。它不會告訴你文件存在,因爲它在檢查後可能已被刪除。它不會告訴您該文件不存在,因爲它可能在您檢查後立即創建。它告訴你的是它是否存在。爲了處理在你嘗試使用它之前文件已經停止存在的情況,無論如何,你可能會使用一個「try/except」對,所以90%的時間你只需要做這些就可以了。 – DSM

+1

如果文件不存在,推測'copy()'會引發異常,所以我認爲'open()'行可以簡單地刪除。 –

+0

@forivall - os.getcwd給出test_msm8974.sh文件存在的正確目錄.. – user1934146

相關問題