【问题标题】:Input data not defined [duplicate]输入数据未定义[重复]
【发布时间】:2012-07-10 11:31:05
【问题描述】:

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

file=input('input file name')

然而,每当你输入一个文件名(或任何与此相关的东西)时,就会弹出一个错误,说明刚刚输入的任何内容都没有定义并结束程序。是什么导致这种情况发生?

谢谢

【问题讨论】:

  • 复制错误?您如何尝试使用变量“文件”?

标签: python input


【解决方案1】:

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

附带说明,推荐的样式指南是使用 open 打开文件,因此您在这里隐藏 file 并不算太糟糕,但任何希望能够使用 file 的人(基本上与open) 相同,因为函数稍后可能会受到冲击。

【讨论】:

  • +1 解释为什么 raw_input
【解决方案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 有它的缺点。

【讨论】:

    【解决方案3】:

    您需要使用 raw_input 而不是 input。

    输入文档:

    输入([提示])->值

    等效于 eval(raw_input(prompt))。

    python 解释器尝试评估您的输入,如果它是一个文件名,它将失败。

    【讨论】:

      【解决方案4】:

      input 评估它的参数,所以当你给它类似my_text_file 的东西时,它会尝试把它当作一个变量。请改用raw_input

      (另外,使用file 作为变量名是个坏主意,因为它也是Python 内置类的名称。更喜欢pathfilenamef 之类的名称。)

      【讨论】:

        猜你喜欢
        • 2013-06-29
        • 1970-01-01
        • 2019-05-01
        • 2018-09-24
        • 1970-01-01
        • 2014-09-10
        • 2018-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多