不定义的输入数据[重复](Input data not defined [duplicate])

2019-09-28 13:33发布

这个问题已经在这里有一个答案:

  • 在python误差d未被定义。 [重复] 3个答案

我写一些代码,需要用户输入一个文件在程序中使用:

file=input('input file name')

然而,当你再输入一个文件名(或任何与此有关的)错误弹出saything,无论刚刚输入没有定义,并且结束程序。 是什么原因造成这种情况?

谢谢

Answer 1:

这个很重要:

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虽然有它的缺点。



Answer 2:

如果你使用的是Python 2.x的-你想使用raw_input - input用于东西在2.x版本完全不同 如果你正在使用Python 3.X - input是正确的。

在一个侧面说明,推荐风格指南是使用open打开文件,所以它不是太糟糕,你要阴影file在这里,但任何人都期待能够使用file (基本相同, open )的功能可能会震惊之后。



Answer 3:

您需要改用输入的raw_input的。

输入docsting:

输入([提示]) - >值

相当于EVAL(的raw_input(提示))。

Python解释器试图EVAL你的输入,如果它是一个文件名,这将失败。



Answer 4:

input计算它的参数,所以,当你给它喜欢的事my_text_file它会尝试把它看成一个变量。 使用raw_input来代替。

(此外,使用file作为变量名是一个坏主意,因为它也是一个Python的名字内置类。体型类似pathfilenamef )。



文章来源: Input data not defined [duplicate]
标签: python input