无法使用python向perl脚本传递参数

2024-10-01 02:36:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图做一个简单的操作——从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}$

有人有什么建议吗?谢谢!在


Tags: 方法脚本urluid参数binourengine
1条回答
网友
1楼 · 发布于 2024-10-01 02:36:25

方法3看起来大体上是正确的,但是您几乎肯定不想“引用”URL,需要提供正确的脚本路径,并且希望将单个列表传递给Popen。尝试:

addcmd = ["/usr/bin/perl", "../perl/bin/engine.pl", " uid", str(our_id), " url", source_url]
addtodb = subprocess.Popen(addcmd)

更新:来自@ajefferis的合并修复

关于如何处理程序参数,这里似乎有一个潜在的误解。在

命令shell通过解析用户输入来确定程序参数,通常在空格上拆分(除非用引号括起来)。{contrast}直接接受api的底层参数。在

结果是,当使用这样的api时,1)您不需要引号,2)您需要在参数周围添加额外的空格。这也是为什么不能(通常)使用shell语法,如~、通配符扩展或环境变量。在

相关问题 更多 >