我正在尝试从python脚本通过subprocess.call()
执行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"
任何人都可以帮助我指出这里可能出现的问题以及解决方法吗?
答案 0 :(得分:0)
遗憾的是,Python documentation在这一点上有点不清楚,但是当您将shell=True
传递给subprocess.call
时,args
参数应该是单个字符串而不是一个列表。如果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
字符串不包含空格或不正确的引号字符。