1

Pythonコマンドモジュールを使用してmongoimportコマンドを実行しています

status = utilities.execute(mongoimport)

utility.py

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

これを実行すると、エラーが表示されます

sh: Syntax error: ";" unexpected 

ドキュメントに次のように記載されていることがわかります。

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  

このコマンドを実行できるようにするには、どうすれば修正できますか?

4

1 に答える 1

1

サブプロセスモジュールを使用する

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

これにより、コマンドが失敗した場合にエラーが発生します。空の文字列をチェックする必要はありません。シェルを介してものを渡したいと本当に確信している場合は、次のように呼び出します

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

シェルを介してものを渡すことは、セキュリティ問題の優れたベクトルであることに注意してください。

于 2012-05-08T19:36:17.533 に答える