2014-09-19 36 views
2

简介: 如何在Python中读取文件? 为什么必须这样做?FileNotFoundError:[Errno 2]

我的问题是,我得到以下错误:

Traceback (most recent call last): 
    File "C:\Users\Terminal\Desktop\wkspc\filetesting.py", line 1, in <module> 
    testFile=open("test.txt") 
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt' 

从下面的代码来源于:(即整个 '的.py' 文件)

testFile=open("test.txt") 
print(testFile.read()) 

“的test.txt “与我的程序位于同一个文件夹中。我是Python新手,不明白为什么我会收到文件位置错误。我想知道修补程序以及为什么修复必须以这种方式完成。

我一直在使用的文件的绝对路径尝试, “C:\用户\终端\桌面\ wkspc \ test.txt的”

其他详情:

"Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit (Intel)] on win32" 
Windows 7, 32 Bit 
+3

似乎是由不同原因造成的。 1.为了使用''test.txt'',你如何调用你的python脚本? 2.为了使用完整路径,你是否避免转义字符(例如,通过使用'r“C:\ Users \ Terminal \ Desktop \ wkspc \ test.txt''注意'r') – starrify 2014-09-19 01:00:05

+0

你能告诉我们命令你用你的脚本启动python? – 2014-09-19 01:09:21

+1

如果您想使用Python从python脚本所在的目录加载'test.txt',那么当您启动python时,您需要在该目录中。我唯一的猜测是,你从其他地方启动python脚本 – 2014-09-19 01:15:55

回答

11

由于您使用IDLE (GUI)脚本可能不会从脚本所在的目录启动。我认为最好的办法是去的东西,如:当前运行的脚本所在之处

import os.path 

scriptpath = os.path.dirname(__file__) 
filename = os.path.join(scriptpath, 'test.txt') 
testFile=open(filename) 
print(testFile.read()) 

os.path.dirname(__file__)将找到的目录。然后它使用os.path.join以此路径为前缀test.txt

如果这不起作用,那么我只能猜测test.txt实际上与您正在运行的脚本不在同一个目录中。

+1

这工作,谢谢!希望,一旦我受到更多教育,我可以摆脱这种修复。 – ThisGuy 2014-09-19 01:48:51

+0

通常情况下,您需要指定文件名的完整路径,因为它提到了starrify(他们的建议可能也会起作用),并且可以解决问题。无论脚本如何启动以及来自何处(不同路径),此代码都可以工作。 – 2014-09-19 01:52:59