os.system с пробелами в пути - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь использовать os.system для вызова программы в C:/Program Files.

Пробел в этом имени каталога путается при каждой попытке.Вот мой код:

cmd = 'C:Program Files\OpenSCAD\openscad.exe -o block0.stl block0.scad'
print cmd
os.system(cmd)

Космос разрушает вещи.Я пробовал около пяти версий пунктуации (включая некоторые рекомендованные в других постах), перечисленных здесь с пунктуацией источника, результирующей строкой, как ее видит Python, и результатами из os.system.

Как вы делаете пунктуациюэто правильно?

cmd = 'C:Program Files\OpenSCAD\openscad.exe -o block0.stl block0.scad'

C:Program Files\OpenSCAD\openscad.exe -o block0.stl block0.scad
'C:Program' is not recognized as an internal or external command,
operable program or batch file.

cmd = 'C:"Program Files"\OpenSCAD\openscad.exe -o block0.stl block0.scad'

C:"Program Files"\OpenSCAD\openscad.exe -o block0.stl block0.scad
The system cannot find the path specified.

cmd = 'C:"Program Files\OpenSCAD\openscad.exe" -o block0.stl block0.scad'

C:"Program Files\OpenSCAD\openscad.exe" -o block0.stl block0.scad
The system cannot find the path specified.

cmd = 'C:\"Program Files\OpenSCAD\openscad.exe\" -o block0.stl block0.scad'

то же самое


cmd = 'C:""Program Files\OpenSCAD\openscad.exe"" -o block0.stl block0.scad'

C:""Program Files\OpenSCAD\openscad.exe"" -o block0.stl block0.scad
'C:""Program' is not recognized as an internal or external command,
operable program or batch file.

cmd = r'C:Program Files\OpenSCAD\openscad.exe -o block0.stl block0.scad'

(рекомендуется здесь )

C:Program Files\OpenSCAD\openscad.exe -o block0.stl block0.scad
'C:Program' is not recognized as an internal or external command,
operable program or batch file.

1 Ответ

2 голосов
/ 17 июня 2019

У вас почти было это пару раз. Проблема в том, что вам нужно либо поставить двойную обратную косую черту, поскольку обратная косая черта является escape-символом в строках Python, либо использовать необработанные строки с префиксом r. В любом случае, однако, вы должны иметь обратную косую черту после C: и заключать в кавычки часть имени, содержащую пробелы. Любой из следующих примеров должен работать:

cmd = 'C:\\"Program Files\\OpenSCAD\\openscad.exe" -o block0.stl block0.scad'
cmd = r'C:\"Program Files\OpenSCAD\openscad.exe" -o block0.stl block0.scad'
cmd = "\"C:\\Program Files\\OpenSCAD\\openscad.exe\" -o block0.stl block0.scad"
cmd = r'"C:\Program Files\OpenSCAD\openscad.exe" -o block0.stl block0.scad'

Обратите внимание, что вы не сможете использовать двойные кавычки и необработанную строку Python, потому что вы не сможете избежать двойных кавычек и пути в строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...