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パラメータはリストではなく単一の文字列であると想定されています。コマンドと個々の引数のリストである必要がありshell=Falseます (デフォルト)。

したがって、これらは両方とも正しいです。

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

また

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

joblist2 番目のバージョンでは、文字列にスペースや不適切な引用符が含まれていないことを確認する必要があるため、最初の (非シェル) バージョンをお勧めします。

于 2015-07-30T16:09:58.140 に答える