Python - os.system - ввод командной строки с несколькими путями к файлам (альтернатива r "C: \ et c") - PullRequest
3 голосов
/ 12 февраля 2020

Каков наилучший способ ввести следующее в windows командную строку из Python 3? В команде есть три пути к файлам, которые должны быть введены в одну строку (я полагаю).

"C:\Program Files\ANSYS Inc\ANSYS Student\v194\Framework\bin\Win64\runwb2" -B -F "E:\MEngA\Ansys\IFD_PartA_Rev3.wbpj" -R "E:\MEngA\Results\sn07\script_partA.wbjn"

Требуются кавычки. В настоящее время пытается:

os.system('"C:\Program Files\ANSYS Inc\ANSYS Student\v194\Framework\bin\Win64\runwb2" -B -F "E:\MEngA\Ansys\IFD_PartA_Rev3.wbpj" -R "E:\MEngA\Results\sn07\script_partA.wbjn"')

, но пробелы вызывают проблемы:

'C:\Program' is not recognized as an internal or external command, operable program or batch file.

с использованием r до того, как filepath сработал при простой попытке: os.system(r'"C:\Program Files\ANSYS Inc\ANSYS Student\v194\Framework\bin\Win64\runwb2")

, но не работает с полной строкой. Есть идеи как обойти это?

1 Ответ

2 голосов
/ 12 февраля 2020

Вы можете использовать subprocess.run, который принимает список строк, которые вместе составляют полную команду. Поскольку ваши пути содержат обратную косую черту, вы можете использовать r'', чтобы получить необработанную строку. Первый путь также содержит пробелы и, следовательно, должен быть заключен в дополнительные кавычки "".

import subprocess

subprocess.run([
    r'"C:\Program Files\ANSYS Inc\ANSYS Student\v194\Framework\bin\Win64\runwb2"',
     '-B',
     '-F',
    r'E:\MEngA\Ansys\IFD_PartA_Rev3.wbpj',
     '-R',
    r'E:\MEngA\Results\sn07\script_partA.wbjn',
])
...