2012-04-18 65 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')