2016-09-11 14 views
1

私は新しいPythonユーザーです。プログラムによって開かれて読み込まれるテキストファイル(.txt)の名前を入力するpythonスクリプトを作成しました。作業ディレクトリの.txtファイル/変更時にPythonエラーメッセージが表示される

name = raw_input("Enter file:") 
if len(name) < 1: 
    name = "test.txt" 
handle = open(name) 

これは私のために完全に罰金働いていたが、その後、私はアナコンダをインストールし、同じ.pyスクリプトを実行しようとしたと、このエラーメッセージを取得保管:

$ python /test123.py 
Enter file:'test.txt' 
Traceback (most recent call last): 
    File "/test123.py", line 26, in <module> 
    handle = open(name) 
IOError: [Errno 2] No such file or directory: "'test.txt'" 

私は何も変わっていなかったにもかかわらず、スクリプトファイルまたはテキストファイルであり、テキストファイルがディレクトリに存在することを確認してください。だから私はAnacondaをアンインストールし、AnacondaディレクトリとAnacondaを指すPATH変数を~/.bash_profileファイルで削除し、問題が解決するかどうか確認しました。 ?

:しかし、私はまだ間違っている私はTextWranglerのから直接、ターミナル内のファイルを実行する場合、私はすべてのエラーを取得していない、と私 .pyスクリプトがシェバング行に #!/usr/bin/env python

私の情報が含まれています:(同じエラーを取得していますその時のために非常に役立つと

$ sw_vers 
ProductName: Mac OS X 
ProductVersion: 10.11.6 
BuildVersion: 15G1004 

$ python 
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 26 2016, 12:10:39) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 

$ which python 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python 

$ /usr/bin/python -V 
Python 2.7.10 

おかげ

EDIT:!私はtest123.py文書とtest.txtファイルの両方をコピーしたディレクトリ/Users/myusername/Documentsに入れとtを走った 彼は再びスクリプトを入力し、今回は「ファイルを入力」プロンプトで/Users/myusername/Documents/test.txt(引用符は不要)を入力して正常に動作しました!

これまで私にとってはうまくいきましたが、Pythonスクリプトを実行すると、作業ディレクトリは自動的に.pyファイルがあるディレクトリに変わります内部。これは間違っていますか?それとも、どういうわけか以前のように思えたが、今はそうではないので、どうすれば私の設定をそれに戻すことができるだろうか?

EDIT 2: 今、私は私の元のエラーの原因は、Pythonを使用した作業ディレクトリの結果であったが実現したので、私は私のtest123.pyに次の行を追加することによって、私の問題を解決することができましたスクリプト:

import os 
abspath = os.path.abspath(__file__) 
dname = os.path.dirname(abspath) 
os.chdir(dname) 

ここで提案として:python: Change the scripts working directory to the script's own directory

しかし、私はまた、今、私は作業ディレクトリを変更することができましたことをするので、入力を@SomethingSomethingが提供する答えを選択してい'test.txt'(引用符付き)は無効ですが、test.txt(引用符なし)は必要に応じて動作します。

(以前私がPythonスクリプトを実行していたときに、作業ディレクトリが.pyファイルが入っていたディレクトリに自動的に変更され、何とか設定が変更されていた理由がわかりました。しかし、今では私の問題を解決したので、これは重要ではないようです。)

皆さん、ありがとうございました!

+1

ファイルが作業ディレクトリにない可能性があります。アナコンダが使用しています。 Anacondaでは、 'import os'' os.getcwd()'をチェックしてみてください。あなたの作業ディレクトリを変更するためのメニューオプションがあると思います。 – Andrew

+1

STDINで文字列を入力すると引用符が削除されます。 – SomethingSomething

+0

引用符がないと、残念なことに同じエラーメッセージが表示されます。 – Mabyn

答えて

3

それはあなたの入力が間違っている、非常に簡単です:

誤:

$ python /test123.py 
Enter file:'test.txt' 

正しい:

$ python /test123.py 
Enter file:test.txt 

'文字が含まれていません。これはコードではなく、標準入力だけです

+0

引用符の有無にかかわらず、同じエラーメッセージが表示されます: - /(TextWrangler)を使用しているテキストエディタから直接端末でスクリプトを実行すると、引用符なしで。 – Mabyn

+0

ありがとう!これは明らかに私の2つの問題の1つでした。上記の私の編集を参照してください。 – Mabyn

関連する問題