2016-09-22 9 views
1

私は小さなPythonプログラムで関数呼び出しとしてユーザー入力を取得しようとしていますが、input()メソッドを使用しているときには、Pythonシェルは何も入力せずに終了しません自体。入力関数が機能せず、FileInputオブジェクトを返します

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> 
>>> 

私は何も入力せずに、私はそれを動作させるために何をすべき

+0

実際のコードには表示されないことがあります。実際のコード 'comm'のどこかが' FileInput'オブジェクトになっているようです。 – idjaw

+0

あなたは皆正しいです – Blaaaakuu

答えて

2

ここには、組み込みのinputのマスキングがあります。ある時点で、from fileinput import inputが発生し、builtins.inputをマスクし、それをfileinput.inputに置き換えます。この関数は、strを返しますが、その代わり、FileInputのインスタンスを返しません。

inputを使用して
>>> from fileinput import input 

fileinput.inputをピックアップ:

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

fileinputをインポートするはモジュールをインポート必要がある場合には

>>> import fileinput 
>>> print(fileinput.input("--> ")) # fileinput input, returns FileInput instance. 
>>> print(input("--> "))   # original input, returns str 
0を使用してinput関数にアクセスします。

このオプションが失敗している(または、あなたには、いくつかの理由で輸入を制御することはできません)場合、あなたはそれが内蔵されたバージョンを使用するためにルックアップを取得しようと、インポート参照を削除できます。

>>> from fileinput import input 
>>> print(input("--> ")) 
<fileinput.FileInput at 0x7f16bd465f60> 
を今del inputで参照を削除し

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

input作品、それは常にそうであるよう。

+0

ありがとうございました!私は一日ここにこだわってきた – Blaaaakuu

関連する問題