2

我正在尝试通过subprocess.call()python 脚本执行 RaptorXML+XBRL 命令。语法是:

result = call(["/opt/Altova/RaptorXMLXBRLServer2015/bin/raptorxmlxbrl xbrl","--listfile", joblist],shell=True )

哪里joblist = "valSECfilings.jobs"。但是当我执行这个 python 脚本时,我得到了这个错误:

Error: No value for mandatory argument 'FILE' specified.
Usage:
   raptorxmlxbrl valxbrl [options] FILE...

   valxbrl can be abbreviated with: xbrl

当我直接在终端上执行此命令时,我没有收到任何错误:

/opt/Altova/RaptorXMLXBRLServer2015/bin/raptorxmlxbrl xbrl --listfile "valSECfilings.jobs"

谁能帮我指出这里可能出了什么问题以及如何解决?

4

1 回答 1

0

不幸的是,Python文档在这一点上有些不清楚,但是当您传递shell=True到时subprocess.callargs参数应该是单个字符串而不是列表。它应该是命令和单个参数的列表 if shell=False(默认值)。

所以这两个都是正确的:

result = call(["/opt/Altova/RaptorXMLXBRLServer2015/bin/raptorxmlxbrl", "xbrl", "--listfile", joblist])

或者

result = call("/opt/Altova/RaptorXMLXBRLServer2015/bin/raptorxmlxbrl xbrl --listfile " + joblist, shell=True)

我更喜欢第一个(非 shell)版本,因为第二个版本意味着您必须确保joblist字符串不包含空格或不正确的引号字符。

于 2015-07-30T16:09:58.140 回答