【问题标题】:call a perl script with options within a python在 python 中调用带有选项的 perl 脚本
【发布时间】:2014-11-14 05:39:00
【问题描述】:

我知道还有其他帖子有同样的问题,但我无法在我的 python 脚本中运行 perl 脚本来引用这些帖子。

这是我的代码的摘录:

var1 = "-proj xyz"
var2 = "-c groups"
proc2 = subprocess.Popen(["perl", "some_perl_script.pl", var1, var2], stdout=subprocess.PIPE)
proc2.stdin.write(var1)
proc2.stdin.write(var2)
proc2.stdin.close()
proc2.wait()

注意:我应该运行:./some_perl_script.pl -c groups -proj xyz

请让我知道我在这里做错了什么? 谢谢!

【问题讨论】:

  • this 的可能重复项,但如果没有更多关于您的实际问题的详细信息,我无法确定。
  • 为什么要将var1var2 的内容发送到Popen 命令,将它们写入标准输入?

标签: python python-2.7


【解决方案1】:

您将 "-proj xyz" 作为单个参数而不是两个参数传递。换句话说,而不是这样:

./some_perl_script.pl -c groups -proj xyz

……你正在做的就是这样:

./some_perl_script.pl '-c groups' '-proj xyz'

因此,当 perl 脚本查看是否有任何参数是 -c 时,它们都不是,因为 -c groups 不是 -c

当然,在某些情况下你会侥幸逃脱;大多数将-cfoo-c foo 视为相同的参数解析器也会将'-c foo' 视为相同。但我猜任何寻找 -proj 之类参数的解析器都不是这种情况。

因此,如果您出于某种原因确实需要将这些选项/参数对分别放在单独的变量中,请尝试以下操作:

var1 = ["-proj", "xyz"]
var2 = ["-c", "groups"]
proc2 = subprocess.Popen(["perl", "some_perl_script.pl"] + var1 + var2,
                         stdout=subprocess.PIPE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2015-07-16
    • 2017-06-29
    • 1970-01-01
    相关资源
    最近更新 更多