2012-04-18 58 views
1

我在Python 3.2.3中遇到了open()函数的问题。下面的代码工作以及使用2.7.3,但不能与Python 3:在Python 3.2.3中使用open()问题

file = open("text.txt", 'r') 

在Python3,它给了我一个标准的IO错误:

IOError: [Errno 2] No such file or directory: 'text.txt' 

注意,文件──test.txt文件所引用与python文件位于同一目录中。

任何想法?

+1

什么不起作用?你有错误信息吗?如果是这样,什么? – kindall 2012-04-18 16:45:49

+0

它如何失败?是通过语法错误,IOError还是其他?你能提供一个堆栈跟踪吗?当我们没有任何进展时,很难对答案进行解码。 – mklauber 2012-04-18 16:46:41

+0

添加了该错误。 text.txt肯定与试图打开它的python文件在同一个目录中。另外,我用Pydev使用Eclipse – Evan 2012-04-18 16:48:24

回答

3

文件名不是相对于文件的目录,而是您的current working directory(您可以通过os.getcwd()找到)。

如果你想打开他的名字是相对于你的Python文件的文件,你可以使用魔法变__file__,就像这样:

import os.path 
fn = os.path.join(os.path.dirname(__file__), 'text.txt') 
with open(fn, 'r') as file: 
    # Do something, like ... 
    print(file.read()) 
+0

在Python 3中,可能应该使用pathlib.Path,否?然后我再次登陆这里试图找出为什么open()在路径上不起作用... – 2016-06-22 13:25:17

+0

这个问题是关于python 3.2,其中pathlib还没有出现。你为什么不[问你的问题](http://stackoverflow.com/questions/ask)? – phihag 2016-06-22 13:45:22

0

您试图打开读模式文件,这个文件必须存在。

也许问题是该文件只是不存在于你的python3路径中,因此打开命令失败,但'python2.7库(或python2.7路径中的某处)存在'text.txt',并且这个是python能够找到并打开文件的原因。

你可以只尝试这个代码(这将保证你的文件存在,因为你创建它):

f = open('text.txt','w') 
f.close() 
f.open('text.txt','r') 
0

我使用Eclipse与Pydev的,并且有包装,而不是内部的text.txt文件在项目层面。要访问包内的文件,您需要使用:

file = open("[package]/text.txt", 'r')