输入数据未定义[重复]

问题描述 投票:0回答:4

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

file=input('input file name')

但是,每当您输入文件名(或任何与此相关的内容)时,都会弹出错误,提示刚刚输入的内容尚未定义并结束程序。是什么原因导致这种情况发生?

谢谢

python input
4个回答
4
投票

如果您使用的是 Python 2.x - 您想使用

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

顺便说一句,推荐的风格指南是使用

open
打开文件,所以在这里隐藏
file
也不算太糟糕,但任何希望能够使用
file
的人(基本上与
open
)作为一个函数可能会在稍后受到冲击。


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


0
投票

您需要使用raw_input而不是input。

输入文档:

输入([提示])->值

相当于 eval(raw_input(prompt))。

Python 解释器尝试评估您的输入,如果它是文件名,则会失败。


0
投票

input
评估其参数,因此当您给它类似
my_text_file
之类的内容时,它会尝试将其视为变量。请使用
raw_input
来代替。

(另外,使用

file
作为变量名是一个坏主意,因为它也是 Python 内置类的名称。更喜欢像
path
filename
f
这样的名称。)

© www.soinside.com 2019 - 2024. All rights reserved.