在 Python 程序中启动一个非常复杂的命令
Launching a very complex command in a Python program
在 Python 程序中,我需要启动一个复杂的命令,实际上是一个需要大量参数的 python 程序。我需要启动的是这样的:
./calculations.py -id -k "{'names':['r','pst'],'index_IN':['at','gl'],'index_OUT':[1,1]}"
-r "[False,False]" -N "[False,False]" -c "['values1**2','np.exp(values2)']"
$SCRATCH/my_dir/*
(确实更复杂,但是主要思路在这个例子里)
因此,关键点是示例中同时存在 "
和 '
,以及计算的使用(平方数和求幂 numpy
)。我试过 subprocess.Popen
但不知何故我无法让它工作。我的尝试:
proc = subprocess.Popen(["./calculations.py -id", "-k",
"{'names':['r','pst'],'index_IN':['at','gl'],'index_OUT':[1,1]}"], ........])
谢谢。
您可以将字符串保存为 python 中带有 r 前缀的原始字符串,如果您同时需要 ' 和 " 而不是考虑使用原始长 python 字符串:
cmdAttributes = r"""{'names':['r','pst'],'index_IN':['at','gl'],'index_OUT':[1,1]}"""
灵活条目也是如此:
pnames = r"['r','pst']"
pindex_IN = r"['at','gl']"
pindex_OUT = r"[1,1]"
cmdAttributes = r"""{{'names':{Names},'index_IN':{Index_IN},'index_OUT':{Index_OUT} }}""".format(
Names = pnames,
Index_IN = pindex_IN,
Index_OUT = pindex_OUT)
两个代码的 cmdAttributes 将相同。
在 Python 程序中,我需要启动一个复杂的命令,实际上是一个需要大量参数的 python 程序。我需要启动的是这样的:
./calculations.py -id -k "{'names':['r','pst'],'index_IN':['at','gl'],'index_OUT':[1,1]}"
-r "[False,False]" -N "[False,False]" -c "['values1**2','np.exp(values2)']"
$SCRATCH/my_dir/*
(确实更复杂,但是主要思路在这个例子里)
因此,关键点是示例中同时存在 "
和 '
,以及计算的使用(平方数和求幂 numpy
)。我试过 subprocess.Popen
但不知何故我无法让它工作。我的尝试:
proc = subprocess.Popen(["./calculations.py -id", "-k",
"{'names':['r','pst'],'index_IN':['at','gl'],'index_OUT':[1,1]}"], ........])
谢谢。
您可以将字符串保存为 python 中带有 r 前缀的原始字符串,如果您同时需要 ' 和 " 而不是考虑使用原始长 python 字符串:
cmdAttributes = r"""{'names':['r','pst'],'index_IN':['at','gl'],'index_OUT':[1,1]}"""
灵活条目也是如此:
pnames = r"['r','pst']"
pindex_IN = r"['at','gl']"
pindex_OUT = r"[1,1]"
cmdAttributes = r"""{{'names':{Names},'index_IN':{Index_IN},'index_OUT':{Index_OUT} }}""".format(
Names = pnames,
Index_IN = pindex_IN,
Index_OUT = pindex_OUT)
两个代码的 cmdAttributes 将相同。