Подпроцесс возвращает статус выхода 1

Когда я запускаю команду в подпроцессе, я получаю статус выхода 1 без печати или возникшей ошибки.

вот мой код:

    def generate_model(self):
        if not ((self.username == None) or (self.password == None) or (self.database == None)):
            cmd = "python -m pwiz -e %s -H %s -u %s -P %s %s > %s"%(self.engine,self.host,self.username,self.password,self.database,self.database+".py")
            print subprocess.check_call(cmd)
        else:
            raise ValueError

Команда запрашивает ввод после открытия терминала. После этого он закрывается с exit status 1

Когда я запускаю ту же команду прямо в командной строке, она работает нормально

1 ответ

Решение

subprocess.check_call() не запускает оболочку по умолчанию и, следовательно, оператор перенаправления > не сработает Чтобы перенаправить стандартный вывод, передайте stdout параметр вместо:

with open(filename, 'wb', 0) as file:
    check_call([sys.executable, '-m', 'pwiz', '-e', ...], stdout=file)

Связанный: Python subprocess.check_output (args) завершается ошибкой, в то время как аргументы, выполняемые через командную строку Windows, работают нормально.

Другие вопросы по тегам