2010-10-23 53 views
2

這是我收到的錯誤:沒有這樣的文件或目錄錯誤

Traceback (most recent call last): 
    File "E:\stuff\module.py", line 91, in <module> 
    f = open('E:/stuff/log.txt') 
IOError: [Errno 2] No such file or directory: 'E:/stuff/log.txt' 

這是我的代碼:

f = open('E:/stuff/log.txt') 

E:/stuff/log.txt文件存在。我可以在Windows資源管理器中導航並打開它,爲什麼我無法打開它?

編輯:

DIR命令的輸出:

C:\Documents and Settings\Administrator>dir e:\stuff 
Volume in drive E has no label. 
Volume Serial Number is 5660-4957 

Directory of e:\stuff 

23. 10. 2010 09:26 <DIR>   . 
23. 10. 2010 09:26 <DIR>   .. 
19. 10. 2010 20:07    385 index.py 
23. 10. 2010 16:12    1 954 module.py 
22. 10. 2010 19:16    8 335 backprop.py 
19. 10. 2010 20:54    1 307 backprop-input.gif 
19. 10. 2010 01:48    310 HelloWorld.kpf 
23. 10. 2010 15:47     0 log.txt.txt 
       6 File(s)   12 291 bytes 
       2 Dir(s) 8 795 586 560 bytes free 



C:\Documents and Settings\Administrator>dir e:\ 
Volume in drive E has no label. 
Volume Serial Number is 5660-4957 

Directory of e:\ 

16. 10. 2010 13:32 <DIR>   development-tools 
23. 10. 2010 09:26 <DIR>   stuff 
       0 File(s)    0 bytes 
       2 Dir(s) 8 795 586 560 bytes free 

我從這樣的CMD運行python腳本:

python E:\stuff\module.py 
+0

「我可以在Windows資源管理器中導航」。所以?從命令提示符處執行「DIR」命令並複製並粘貼該命令。 – 2010-10-23 13:58:41

+0

@S。洛特我做到了。看到我更新的問題。 – 2010-10-23 14:11:03

+1

@Richard:那不是命令提示符,那是python解釋器。 – SilentGhost 2010-10-23 14:13:58

回答

8

首先,從上面看,Windows支持/很好。

其次: 嗯,如果你看看你的文件,你會注意到它不是log.txt,它是log.txt.txt ...你可能會在圖形文件夾查看器中看到它爲「log.txt」 (而不是CLI「dir」命令),因爲它隱藏了已知的文件擴展名。

我建議您禁用此選項 - 請參閱文件夾選項,應該有一個選項「隱藏已知文件類型的擴展名」(或類似名稱)。

1

怎麼樣的閱讀權限?可能未被授權閱讀(默認模式爲打開)

+0

有讀寫權限。 – 2010-10-23 14:12:50

1

由於它是Windows,並且反斜槓是轉義字符,所以您必須加倍反斜槓以將其轉義。嘗試

e:\\stuff\\log.txt 
+0

爲什麼不使用r「e:\ stuff \ log.txt」?爲什麼不使用'os.path.join(「E:」,「stuff」,「log.txt」)'? – 2010-10-23 14:15:25

+0

OP正在使用正斜槓 - 轉義在這裏不是問題。正如Brady和Tim正確指出的那樣,'log.txt'文件不存在,它是'log.txt.txt'。 – paxdiablo 2010-10-23 14:34:42

1

它是一個漫長的時間,我沒有使用Windows,但如果我記得很清楚的窗戶用反斜槓在系統路徑,所以你應該做的:

import os 

file_name = os.path.join("e:\\stuff", "log.txt") 

f = open(file_name) 

,而不是:

f = open('E:/stuff/log.txt') 

在窗口中沒有/在路徑中。

+0

Python實際上處理正斜槓好嗎 - 它可能沒有當你使用它,我不知道多久之前那是:-) – paxdiablo 2010-10-23 14:36:26

+0

@paxdiablo:對不起?我不明白,我說Windows不像unix那樣在路徑中使用反斜線。我什麼時候說過python不處理正斜槓? – mouad 2010-10-23 14:41:42

+0

你說不要使用'f = open('E:/stuff/log.txt')',實際上它可以正常工作。你不需要反斜槓。 – paxdiablo 2010-10-23 14:51:13

1

定義你在這一行中的「目錄」輸出使用os.path.join()

root="E:\\" 
mylog = os.path.join(root,"stuff","log.txt") # or log.txt.txt as seen in your dir output 
f = open(mylog) 
... 
f.close() 
3

查找路徑名:

23. 10. 2010 15:47     0 log.txt.txt 

您正在尋找被命名爲「log.txt.txt」的文件,而不是「log.txt」。當人們將Windows文件管理器設置爲不顯示已知文件擴展名,然後嘗試添加或修改擴展名時,我發現這種情況會發生。我向其他人推薦他們關閉這種行爲。你可以在我相信的View-> Folder Options下執行此操作。

+1

只需要注意一點:人們不用這種方式「設置」,這是(不幸的)默認行爲。在我看來,這是一個可怕的*可怕的想法,但可悲的是,事情就是這樣。 – 2015-02-11 14:43:57

相關問題