commands.getstatusoutput失败说sh:语法错误:“;”意外

时间:2012-05-08 18:33:11

标签: python

我正在使用python命令模块运行mongoimport命令

status = utilities.execute(mongoimport)
utilities.py

中的

def execute(command):
    if not command:
        return (-1, 'command can not be empty or null')
    return commands.getstatusoutput(command)  

当我运行时,我将错误视为

sh: Syntax error: ";" unexpected 

我看到documentation说:

commands.getstatusoutput(cmd)
Execute the string cmd in a shell with os.popen() and return a 2-tuple (status, output). cmd is actually run as { cmd ; } 2>&1, so that the returned output will contain output or error messages  

如何修复此问题才能运行此命令?

1 个答案:

答案 0 :(得分:1)

使用subprocess module

from subprocess import check_output
output = check_output(["ls", "-l"])

如果命令失败,这将引发错误 - 无需检查空字符串。如果您确定要通过shell传递内容,请调用此类

output = check_output("ls -l", shell=True)

请注意,通过shell传递内容是解决安全问题的绝佳方法。