ホームページ >バックエンド開発 >Python チュートリアル >Python でシェル コマンド出力を文字列としてキャプチャして返すにはどうすればよいですか?

Python でシェル コマンド出力を文字列としてキャプチャして返すにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-04 02:09:10619ブラウズ

How Can I Capture and Return Shell Command Output as a String in Python?

シェル コマンドの出力を文字列としてキャプチャする

問題:

シェル コマンドの出力をキャプチャし、次のように返します。エラーか成功かに関係なく、文字列メッセージ。

Python 3.5 以降 (モダン):

import subprocess

def run_command(cmd):
    result = subprocess.run(cmd, stdout=subprocess.PIPE, shell=True)
    return result.stdout.decode('utf-8')

print(run_command('mysqladmin create test -uroot -pmysqladmin12'))
# Example Output:
# mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'

Python 2.7 - 3.4 (レガシー):

import subprocess

def run_command(cmd):
    output = subprocess.check_output(cmd, shell=True)
    return output

print(run_command('mysqladmin create test -uroot -pmysqladmin12'))
# Example Output:
# mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'

オブジェクトを開く (複雑)アプリケーションおよび Python 2.6 以下):

import subprocess

def run_command(cmd):
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
    output, error = p.communicate()
    return output

print(run_command('mysqladmin create test -uroot -pmysqladmin12'))
# Example Output:
# mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'

注:

  • 特定のシェル環境を処理するためにコードを変更する必要がある場合があります。
  • シェル コマンドを実行すると、潜在的なセキュリティ リスクが直接発生します。より安全な実行方法を使用するか、各コマンドの実行を分離して出力を手動でパイプすることをお勧めします。

以上がPython でシェル コマンド出力を文字列としてキャプチャして返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。