Ошибка при выполнении команды RaptorXML через subprocess.call() в python
Я пытаюсь выполнить команду RaptorXML+XBRL через subprocess.call()
из сценария Python. Синтаксис:
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"
Может кто-нибудь помочь мне указать, что здесь может быть не так и как решить эту проблему?
1 ответ
Документация Python, к сожалению, не совсем ясна по этому вопросу, но когда вы проходите 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)
Я бы предпочел первую (не оболочку) версию, потому что вторая означает, что вы должны убедиться, что joblist
Строка не содержит пробелов или неправильных кавычек.