首页 >后端开发 >Python教程 >如何在 Python 中捕获 Shell 命令输出并将其作为字符串返回?

如何在 Python 中捕获 Shell 命令输出并将其作为字符串返回?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-04 02:09:10617浏览

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

将 Shell 命令输出捕获为字符串

问题:

捕获 shell 命令的输出并将其返回为一个字符串,无论是错误还是成功

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'

Popen 对象(复杂应用程序和 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'

注意:

  • 代码可能需要修改以处理特定的 shell 环境或场景。
  • 直接运行shell命令会带来潜在的安全风险。建议使用更安全的运行方法或单独执行每个命令并手动管道输出。

以上是如何在 Python 中捕获 Shell 命令输出并将其作为字符串返回?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn