带有包含空格(路径)的变量的子进程

Subprocess with a variable that contains a whitespace (path)

刚开始Python又开始了,现在我已经卡在下面了...

我正在尝试将 subprocess.Popen 与其中包含空格的变量(Windows 路径)一起使用。

在变量上打印变量似乎工作正常。但是在subprocess.Popen中使用变量时,变量被第一个空格截断了。

脚本的一部分(变量 'image_file' 包含 Windows 个带空格的路径)

def start_phone(image_file):
    cmd = tar_exe + " -tf "+ image_file
    print (cmd)
    subprocess.Popen(cmd, shell=True)

我如何使用带有空格(路径)的变量的子进程?

如果您查看 subprocess documentation,您会发现必须以列表的形式向子进程命令提供参数,因此您的代码示例应类似于

def start_phone(image_file):
    subprocess.Popen([tar_exe, "-tf", image_file])

您可以在每个参数周围加上双引号,其中可能包含空格:

cmd = f'"{tar_exe}" -tf "{image_file}"'
subprocess.Popen(cmd, shell=True)

或者不使用 shell=True 而是将参数放在列表中:

subprocess.Popen([tar_exe, '-tf', image_file])