subprocess.Popen вызвать программу с параметрами - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть EXE-файл, который можно было бы назвать так:

Extractor64.exe -F C:\File1 -E  C:\file2

При попытке вызвать это из подпроцесса. При открытии я не могу найти ошибку файла:

t=subprocess.Popen("start C:\yardi_backup_v2\Extractor64.exe -F C:\yardi_backup_v2\miadmfggp_live_Full_TKDB1A112_201812180000.Lts.bak -E  C:\yardi_backup_v2\tmp\extracted.bak")
t.wait()

Какова правильная структура, чтобы назвать это?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Вы пробовали запустить вместо Popen?

subprocess.run(['Extractor64.exe', '-F', r'C:\File1','-E' , r'C:\file2'])

Вы можете прочитать все о здесь: https://docs.python.org/3/library/subprocess.html#subprocess.run

Это позволяет shell = True и т. Д.

0 голосов
/ 18 декабря 2018
  1. start - встроенная оболочка.Это не совсем исполняемый файл.Таким образом, вы не можете назвать это без shell=True.Это ваша основная ошибка: в системе нет start.exe.Но есть еще кое-что ...
  2. нет необходимости запускать процесс в фоновом режиме, поскольку вы, кажется, ожидаете его.Либо запустите его без start и не ждите, либо просто ждите: не используйте start, поэтому теперь вы можете использовать check_call.
  3. использовать списки, а не строки для аргументов.
  4. использование обратной косой черты в строке требует экранирования / необработанного префикса строки, в вашем случае \t становится "TAB char"

мое предложение:

t=subprocess.check_call([r"C:\yardi_backup_v2\Extractor64.exe",
                         "-F",r"C:\yardi_backup_v2\miadmfggp_live_Full_TKDB1A112_201812180000.Lts.bak",
                         "-E",r"C:\yardi_backup_v2\tmp\extracted.bak"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...