2016-09-22 54 views
1

我想在小型python程序中獲取用戶輸入作爲函數調用,但是當我使用input()方法時,python shell不讓我輸入任何內容並退出本身。輸入函數不起作用並返回FileInput對象

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

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

代碼看起來像這樣我每次運行它的時候,蟒蛇發射器只給我:

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

沒有讓我輸入什麼

我應該怎麼做才能讓工作?

+0

還有別的東西你沒有在你的實際代碼中顯示。它似乎在你的真實代碼中'comm'成爲'FileInput'對象。 – idjaw

+0

你們都是正確的 – Blaaaakuu

回答

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作品總是這樣。

+0

非常感謝!我在這裏呆了一天 – Blaaaakuu

相關問題