Python子进程调用,带有多个引用的参数

use*_*500 5 python subprocess

我在bash中使用以下命令来执行Python脚本.

python myfile.py -c "'USA'" -g "'CA'" -0 "'2011-10-13'" -1 "'2011-10-27'"
Run Code Online (Sandbox Code Playgroud)

我正在编写一个Python脚本来包装这个.我目前不得不使用os.system(我知道,这很糟糕),因为我无法弄清楚如何使用subprocess.Popen获取引号.必须在传入的字符串变量中维护内部单引号.

有人可以帮我确定如何格式化传递给subprocess.Popen的第一个变量.

fab*_*ioM 8

您不需要转义值.对于该过程,一切都以字符串形式传递.

您可以使用shlex模块找出传递变量的最佳方法:

import shlex
shlex.split('python myfile.py -c "USA" -g "CA" -0 "2011-10-13" -1 "2011-10-27"') 
['python',
 'myfile.py',
 '-c',
 'USA',
 '-g',
 'CA',
 '-0',
 '2011-10-13',
 '-1',
 '2011-10-27']
Run Code Online (Sandbox Code Playgroud)


Céd*_*ien 4

即使使用带引号的参数,您也应该能够使用subprocess.Popen启动脚本:

subprocess.Popen([
   "/usr/bin/python", 
   "myfile.py",
   "-c",
   "'USA'",
   "-g",
   "'CA'",
   "-0",
   "'2011-10-13'",
   "-1",
   "'2011-10-27'",
])
Run Code Online (Sandbox Code Playgroud)