私はいくつかのコードを書いていますが、プログラムで使用するファイルをユーザーが入力する必要があります。
file=input('input file name')
ただし、ファイル名(またはそのことについては何か)を入力すると、入力したばかりのものが定義されていないことを示すエラーがポップアップ表示され、プログラムが終了します。これが発生する原因は何ですか?
ありがとう
Python 2.xを使用している場合(使用したい場合raw_input
)input
は、2.xとはまったく異なるものに使用されます。Python3.xを使用している場合-input
正しいです。
ちなみに、推奨されるスタイルガイドはopen
ファイルを開くために使用することです。したがって、ここでシャドウイングすることはそれほど悪くありませんが、関数として(基本的にと同じ)file
を使用できることを期待している人は後でショックを受ける可能性があります。file
open
これは重要:
input([prompt]) -> value
Equivalent to eval(raw_input(prompt)).
eval
入力はあなたの入力を試みます
これをチェックして
In [38]: l = input("enter filename: ")
enter filename: dummy_file
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
C:\Python27\<ipython-input-37-b74d50e2a058> in <module>()
----> 1 l = input("enter filename: ")
C:\Python27\<string> in <module>()
NameError: name 'dummy_file' is not defined
In [39]: input /?
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form:<built-in function input>
Namespace: Python builtin
Docstring:
input([prompt]) -> value
Equivalent to eval(raw_input(prompt)).
In [40]: file = raw_input("filename: ")
filename: dummy_file
In [41]: file
Out[41]: 'dummy_file'
ただし、使用するraw_input
ことには欠点があります。
inputの代わりにraw_inputを使用する必要があります。
入力ドキュメント:
input([prompt])-> value
eval(raw_input(prompt))と同等です。
Pythonインタープリターは入力を評価しようとしますが、ファイル名の場合は失敗します。
input
引数を評価するので、そのようなものを与えると、それmy_text_file
を変数として処理しようとします。raw_input
代わりに使用してください。
(また、file
変数名として使用することは、Python組み込みクラスの名前でもあるため、お勧めできません。、、、のようなものをお勧めしますpath
。)filename
f