输入功能不起作用返回FileInput对象

时间:2016-09-22 02:40:08

标签: python python-3.x input

我试图在一个小python程序中将用户输入作为函数调用但是,当我使用input()方法时,python shell不允许我输入任何内容并自行退出。

from fileinput import input
def funcinput():
    comm = input("-->")
    print('your input is %s' %comm)

if __name__ == "__main__":
    print("try to get input")
    funcinput()

代码看起来像这样,每次运行时,python启动器都会给我:

try to get input
your input is <fileinput.FileInput object at 0x10464c208>
>>> 

不让我输入任何东西

我该怎么做才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

这里的原因是屏蔽内置input。在某些时候,会出现from fileinput import input,这会屏蔽builtins.input并将其替换为fileinput.input。该函数不返回str,而是返回FileInput的实例:

>>> from fileinput import input

现在使用input选择fileinput.input

>>> print(input("--> "))
<fileinput.FileInput at 0x7f16bd465160

如果导入fileinput 必需导入模块并使用点表示法访问input函数:

>>> import fileinput
>>> print(fileinput.input("--> ")) # fileinput input, returns FileInput instance.
>>> print(input("--> "))           # original input, returns str

如果此选项失败(或者由于某种原因您无法控制导入),您可以尝试删除导入的引用以查找它以使用内置版本:

>>> from fileinput import input
>>> print(input("--> "))
<fileinput.FileInput at 0x7f16bd465f60>

现在删除del input的引用:

>>> del input
>>> input("--> ")
--> 

input一如既往。