2017-06-23 11 views
0

私はDjango manage.py shellにリダイレクトするPythonスクリプトを持っています。StdInをpython manage.pyシェルにリダイレクトするときにStdInからの入力を読む

$ python manage.py shell < script.py 

私は何をすべきかを決定するためにユーザーから回答を得たいと思います。しかし、私はinput()またはsys.stdin.readline()でそれをすることはできません。 sys.stdin.readlineで

EOFError: EOF when reading a line 

:この場合、スクリプトで

answer = sys.stdin.readline() 
if answer == 'y': 
    # Do something 
else: 
    pass 

を待たずに続けてエラーが

answer = input('A question') 
if answer == 'y': 
    # Do something 
else: 
    pass 

入力()で

ユーザ入力。

これを行う正しい方法は何ですか?

+0

なぜ文字列 "A question"をreadline()に渡していますか? –

+0

申し訳ありませんが、私は質問を修正しました。 – Caco

+0

input()ではなくraw_input()で試してみましたか? – JohnDoe

答えて

1

./manage.py shellは入力がありますが、入力した内容はscript.pyです。

Django management commandのカスタムを書く方がずっといいです。たとえば、

from django.core.management.base import BaseCommand 

class Command(BaseCommand): 
    def handle(self, *args, **options): 
     answer = input('A question') 
     if answer == 'y': 
      # Do something 
     else: 
      pass 

manage.py my_scriptとします。

関連する問題