从包含空格的 python 执行命令行

Executing command line from python that contains spaces

我尝试使用软件 PTGui 自动执行来自 python 的图像拼接过程。 我可以执行以下在 windows 命令行中完美运行的命令:

C:\Users\mw4168> "C:\Program Files\PTGui\ptgui.exe" -batch "C:\Users\mw4168\OneDrive\Desktop\PTGui Tests rows\Panorama.pts command screenshot here

但是,当我尝试在 Python 中使用 os.system 或 subprocess.run 执行此命令时:

import os
os.system("C:\Program Files\PTGui\ptgui.exe" + "-batch" +"C:\Users\mw4168\OneDrive\Desktop\PTGui Tests rows\panorama.pts")

我收到这个错误:

'C:\Program' 不是内部或外部命令,也不是可运行的程序或批处理文件。 error screenshot here

字符串中的空格似乎有问题...知道如何解决这个问题吗?

非常感谢,

保罗

问题是您可能(因为您没有发布任何代码)没有将 C:\Program Files\PTGui\ptgui.exe 作为字符串传递给终端,而只是一个简单的命令

使用

import os
os.system('\"C:\Program Files\PTGui\ptgui.exe\" -batch')

正如 os.system 文档已经告诉您的那样,更好的解决方案是改用 subprocess

subprocess.run([
    r"C:\Program Files\PTGui\ptgui.exe",
    "-batch",
    r"C:\Users\mw4168\OneDrive\Desktop\PTGui Tests rows\panorama.pts"])

您创建的字符串在各个参数之间也缺少空格;但是让 Python 将参数传递给 OS 也可以让您更好地控制引用等