Когда я запускаю команду через подпроцесс, я получаю статус выхода 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
Когда я запускаю ту же команду непосредственно в командной строке, он отлично работает
Вы пытались поместить свою команду в массив с каждой отдельной строкой? i.e '['python', '-m', 'pwiz']' ... Вы также можете использовать 'shlex.split'. – Idos
Да, я пробовал это, даже если это возвращает код выхода 1 – Harwee
. Рекомендованный @Idos дал действительно хороший, так как он необходим для предотвращения ввода команды. Никогда не создавайте команды как строки. Чтобы решить проблему, вы должны напечатать 'cmd' и запустить программу. Использование '>' redirection может потребовать 'shell = True' для установки' check_call() '. –