带有包含空格(路径)的变量的子进程
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])
刚开始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])