os.system 路径中有空格

os.system with spaces in path

我正在尝试使用 os.system 调用 C:/Program Files 中的程序。

该目录名称中的 space 每次尝试都搞砸了。这是我的代码:

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

Space毁了东西。我已经尝试了这里列出的大约五个标点符号版本(包括其他帖子中推荐的一些)以及源标点符号,Python 看到的结果字符串,以及 os.system.[=27= 的结果]

如何正确标点符号?

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'

(推荐here)

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.

你几乎有几次。问题是您要么需要放置双反斜杠,因为反斜杠是 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 字符串,因为您无法转义双引号和字符串中的路径。