我在Python 3.2.3中遇到open()函数的问题。以下代码使用2.7.3很好,但不适用于Python 3:
file = open("text.txt", 'r')
在Python3中,它给出了一个标准的IOError:
IOError: [Errno 2] No such file or directory: 'text.txt'
请注意,引用的text.txt文件与python文件位于同一目录中。
有什么想法吗?
答案 0 :(得分: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())
答案 1 :(得分:0)
您正在尝试以读取模式打开文件,并且此文件必须存在。
也许问题是你的python3路径中不存在该文件,因此open命令失败,但你的python2.7 lib(或python2.7路径中的某个地方)存在'text.txt',这是为什么python能够找到并打开它。
您可以尝试使用此代码(这将确保您在创建文件后存在该文件):
f = open('text.txt','w')
f.close()
f.open('text.txt','r')
答案 2 :(得分:0)
我使用Eclipse和Pydev,并且在包中而不是在项目级别上有text.txt文件。要访问包中的文件,您需要使用:
file = open("[package]/text.txt", 'r')