python执行linux命令返回值

fiy 其他 107

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Python中执行Linux命令并获取返回值,可以使用`subprocess`模块。`subprocess`模块提供了执行外部命令的功能,并且可以捕获标准输出、错误输出和返回状态等信息。

    下面是一个简单的示例代码:

    “`python
    import subprocess

    def execute_command(command):
    process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, error = process.communicate()
    return output.decode(‘utf-8’), error.decode(‘utf-8’), process.returncode # 返回输出结果、错误信息和返回状态码

    # 执行命令
    command = “ls -l” # 要执行的Linux命令
    output, error, returncode = execute_command(command)

    # 输出结果
    if returncode == 0:
    print(“输出结果:”)
    print(output)
    else:
    print(“错误信息:”)
    print(error)
    “`

    在上面的示例中,`execute_command`函数接收一个命令作为参数,使用`subprocess.Popen`来执行命令,并通过`communicate`方法获取输出结果、错误信息和返回状态码。然后根据返回状态码进行相应的处理。

    使用这种方式,你可以在Python中执行任意的Linux命令,并获取其返回值。注意,`shell=True`参数将命令传递给shell进行解释,因此可以直接执行命令中的管道、重定向等操作。如果不需要执行shell命令,可以将`shell`参数设置为False。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Python中执行Linux命令并获取其返回值可以使用`subprocess`模块。`subprocess`模块是Python用来创建新进程,与子进程进行通信和执行外部命令的标准库。

    下面是使用`subprocess`模块执行Linux命令并获取返回值的几种方法:

    1. 使用`subprocess.run`函数:

    “`
    import subprocess

    result = subprocess.run([‘ls’, ‘-l’], capture_output=True, text=True)
    print(result.returncode) # 返回值
    print(result.stdout) # 标准输出
    print(result.stderr) # 标准错误输出
    “`

    在上面的例子中,`subprocess.run`函数接收一个命令和参数的列表,`capture_output=True`表示将标准输出和标准错误输出都保存在`stdout`和`stderr`属性中,`text=True`表示以文本形式获取输出。

    2. 使用`subprocess.Popen`类:

    “`
    import subprocess

    process = subprocess.Popen([‘ls’, ‘-l’], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()
    returncode = process.returncode

    print(returncode) # 返回值
    print(stdout.decode(‘utf-8’)) # 标准输出
    print(stderr.decode(‘utf-8’)) # 标准错误输出
    “`

    在上面的例子中,`subprocess.Popen`类创建一个新的子进程来执行命令,`stdout=subprocess.PIPE`和`stderr=subprocess.PIPE`表示将标准输出和标准错误输出保存在`stdout`和`stderr`属性中,`communicate()`方法阻塞等待子进程结束并返回输出结果。

    3. 使用`os.popen`函数:

    “`
    import os

    command = ‘ls -l’
    result = os.popen(command).read()
    print(result)
    “`

    在上面的例子中,`os.popen`函数执行命令并返回一个文件对象,通过读取文件对象的内容获取命令的输出结果。

    4. 使用`subprocess.check_output`函数:

    “`
    import subprocess

    result = subprocess.check_output([‘ls’, ‘-l’]).decode(‘utf-8’)
    print(result)
    “`

    在上面的例子中,`subprocess.check_output`函数执行命令并返回命令的输出结果,通过`decode(‘utf-8’)`将字节流转换为字符串。

    5. 使用`os.system`函数:

    “`
    import os

    command = ‘ls -l’
    os.system(command)
    “`

    在上面的例子中,`os.system`函数执行命令并将结果直接打印到控制台,返回值可通过`$?`获取。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Python中执行Linux命令并获取返回值有多种方法,下面将介绍三种常用的方法:

    1. 使用subprocess模块的run函数
    2. 使用os模块的popen函数
    3. 使用os模块的system函数

    # 1. 使用subprocess模块的run函数
    import subprocess

    def execute_command(command):
    try:
    result = subprocess.run(command, shell=True, capture_output=True, text=True)
    return result.returncode, result.stdout
    except subprocess.CalledProcessError:
    return -1, “Failed to execute command”

    # 以ls命令为例,执行ls命令并获取返回值
    return_code, output = execute_command(“ls”)
    print(“返回值:”, return_code)
    print(“输出结果:”, output)

    # 2. 使用os模块的popen函数
    import os

    def execute_command(command):
    try:
    output = os.popen(command).read()
    return 0, output
    except OSError:
    return -1, “Failed to execute command”

    # 以ls命令为例,执行ls命令并获取返回值
    return_code, output = execute_command(“ls”)
    print(“返回值:”, return_code)
    print(“输出结果:”, output)

    # 3. 使用os模块的system函数
    import os

    def execute_command(command):
    try:
    return_code = os.system(command)
    return return_code >> 8, None
    except OSError:
    return -1, “Failed to execute command”

    # 以ls命令为例,执行ls命令并获取返回值
    return_code, output = execute_command(“ls”)
    print(“返回值:”, return_code)
    print(“输出结果:”, output)

    注意:以上方法中,返回值return_code表示命令执行的返回值,通常情况下,0表示成功,非零表示失败;output表示命令的输出结果。需要注意的是,os模块的popen函数在Python 3中已被废弃,推荐使用subprocess模块的run函数来执行命令。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部