2012-04-18 14 views
1

Python 3.2.3でopen()関数に問題があります。参照されているTEXT.TXTファイルというPython 3.2.3でopen()を使用している問題

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

注:のpython3で

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

、それは私に標準例外IOErrorを与える:なく、Pythonの3で、2.7.3を使用してうまく機能し、次のコードpythonファイルと同じディレクトリにあります。

アイデア?

+1

どうしてうまくいかないのですか?エラーメッセージが表示されますか?もしそうなら、何? – kindall

+0

どのように失敗しますか?それは構文エラー、IOError、または何か他のものを通してですか?スタックトレースを提供できますか?私たちが何かを続ける必要がないときは、解答を解読するのは難しいです。 – mklauber

+0

がエラーを追加しました。 text.txtはpythonファイルと同じディレクトリにあります。さらに、私はPydevでEclipseを使用しています – Evan

答えて

3

ファイル名はファイルのディレクトリからのものではなく、current working directoryos.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()がPath上で動作しない理由を理解しようとしました。 –

+0

この質問は、pathlibがまだ存在しないpython 3.2についてです。なぜあなたは[あなたの質問を]しないでください(http://stackoverflow.com/questions/ask)? – phihag

0

あなたは、読み取りモードでファイルを開こうとしている、とこのファイルが存在する必要があります。

おそらく、ファイルがあなたのpython3パスに存在しないため、openコマンドは失敗しますが、あなたのpython2.7のlib(またはpython2.7のパスのどこか)に 'text.txt' pythonがファイルを見つけて開くことができる理由です。

f = open('text.txt','w') 
f.close() 
f.open('text.txt','r') 
0
私はPyDevはとEclipseを使用していた

、およびパッケージの代わりに、内TEXT.TXTファイルを持っていた:

あなたはこのコードを試すことができます(これは、あなたがそれを作成するため、存在してあなたのファイルを保証します)プロジェクトレベルでパッケージ内のファイルにアクセスするには、次のファイルを使用する必要があります。

file = open("[package]/text.txt", 'r') 
関連する問題