将StdIn重定向到python manage.py shell时,从StdIn读取输入

时间:2017-06-23 18:46:25

标签: python django shell stdin

我有一个python脚本,我称之为重定向到Django $ python manage.py shell < script.py

input()

我想从用户那里得到答案来决定做什么。但我无法使用sys.stdin.readline()answer = input('A question') if answer == 'y': # Do something else: pass

使用input()

EOFError: EOF when reading a line

错误:

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

使用sys.stdin.readline:

{{1}}

在这种情况下,脚本会继续而无需等待用户输入。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您正在使./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调用。