2010-10-23 42 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

相关问题