我试图做一个简单的操作——从python3脚本中执行一个perl脚本,向perl脚本传递几个参数。以下是我尝试过的,没有任何效果:
方法1——运行perl脚本,但不传递参数
addexec = "../perl/bin/engine.pl"
addvars = " --uid " + str(our_id) + " --url '" + source_url + "'"
addtodb = subprocess.Popen(["/usr/bin/perl", addexec, addvars])
方法2——perl脚本不运行,表示找不到文件
^{pr2}$方法3——perl脚本不运行,生成错误
^{3}$有人有什么建议吗?谢谢!在
方法3看起来大体上是正确的,但是您几乎肯定不想“引用”URL,需要提供正确的脚本路径,并且希望将单个列表传递给
Popen
。尝试:更新:来自@ajefferis的合并修复
关于如何处理程序参数,这里似乎有一个潜在的误解。在
命令shell通过解析用户输入来确定程序参数,通常在空格上拆分(除非用引号括起来)。{contrast}直接接受api的底层参数。在
结果是,当使用这样的api时,1)您不需要引号,2)您需要在参数周围添加额外的空格。这也是为什么不能(通常)使用shell语法,如
~
、通配符扩展或环境变量。在相关问题 更多 >
编程相关推荐