1

私はいくつかのコードを書いていますが、プログラムで使用するファイルをユーザーが入力する必要があります。

file=input('input file name')

ただし、ファイル名(またはそのことについては何か)を入力すると、入力したばかりのものが定義されていないことを示すエラーがポップアップ表示され、プログラムが終了します。これが発生する原因は何ですか?

ありがとう

4

4 に答える 4

4

Python 2.xを使用している場合(使用したい場合raw_inputinputは、2.xとはまったく異なるものに使用されます。Python3.xを使用している場合-input正しいです。

ちなみに、推奨されるスタイルガイドはopenファイルを開くために使用することです。したがって、ここでシャドウイングすることはそれほど悪くありませんが、関数として(基本的にと同じ)fileを使用できることを期待している人は後でショックを受ける可能性があります。fileopen

于 2012-07-10T11:36:48.147 に答える
2

これは重要:

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ことには欠点があります。

于 2012-07-10T11:37:05.827 に答える
0

inputの代わりにraw_inputを使用する必要があります。

入力ドキュメント:

input([prompt])-> value

eval(raw_input(prompt))と同等です。

Pythonインタープリターは入力を評価しようとしますが、ファイル名の場合は失敗します。

于 2012-07-10T11:36:30.330 に答える
0

input引数を評価するので、そのようなものを与えると、それmy_text_fileを変数として処理しようとします。raw_input代わりに使用してください。

(また、file変数名として使用することは、Python組み込みクラスの名前でもあるため、お勧めできません。、、、のようなものをお勧めしますpath。)filenamef

于 2012-07-10T11:36:40.830 に答える