2017-06-23 172 views
0

我有一個python腳本,我稱之爲將它重定向到Django manage.py shell當StdIn重定向到python manage.py shell時讀取StdIn的輸入

$ python manage.py shell < script.py 

我想從用戶那裏得到答案以決定要做什麼。但我不能用input()sys.stdin.readline()來做。

隨着輸入()

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

錯誤:

EOFError: EOF when reading a line 

隨着sys.stdin.readline:

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

在這種情況下,腳本將繼續不等待用戶輸入。

這樣做的正確方法是什麼?

+0

爲什麼你將字符串「A question」傳遞給readline()? –

+0

對不起,我糾正了問題。 – Caco

+0

你用raw_input()而不是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