【发布时间】:2019-01-26 15:18:14
【问题描述】:
在 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 程序作为子进程通常是错误的。不能
import calculations直接调用它的main函数作为原生Python函数调用吗? -
您需要在后台运行该进程还是只运行它?您需要查看其输出或退出状态吗?
-
是否需要完全按照所示传递计算,即文字字符串
'values1**2'和'np.exp(values2)',还是应该用首先评估这些 Python 表达式的结果替换它们?我怀疑是前者(字符串),因为values1和values2是未定义的变量。 -
将看起来像 Python 可执行表达式的东西作为命令行参数传递也看起来真正的问题是
calculations.py是邪恶的。就像,邪神邪神。 -
@tripleee:我怀疑你的评论对许多听到它的人来说是否有意义,尤其是“Cthulhu”参考。
标签: python shell command-line subprocess popen