...

Python3执行系统命令的几种方式

在Python中我们可以执行一些系统命令来获取一些系统信息,或者结合一些三方命令行工具如JMeter、appium、adb、allure等完成一系列操作。
Python中常见的执行系统命令的方式如下:

os.system#

使用os.system可以很方便的执行一个命令行命令,例如。

import os

# 显示当前目录内容
os.system('ls .')  # Windows系统可以使用 os.system('dir .')

但是,os.system无法获取命令行输出结果,

os.popen#

使用os.popen可以获取到命令行执行结果

import os

output = os.popen('ls .')
print('命令返回结果')
print(output.read())

subprocess.Popen#

另外我们也可以使用子进程subprocess来执行系统命令并获取结果

import subprocess

pipe = subprocess.Popen('ls .', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print('命令返回结果')
print(pipe.stdout.read().decode())

其中,shell=True是使用字符串形式的命令,否则使用列表形式的命令
stdout=subprocess.PIPE指将命令行标准输出放入subprocess管道,
stderr=subprocess.PIPE则表示把错误输出(如果有)放入subprocess管道,可以使用pipe.stderr.read().decode()获取错误结果。
pipe.stdout.read()读取到的是二进制结果,要使用decode()转为字符串格式。

使用paramiko在远程Linux机器上执行命令#

如果想要在在远程服务器上执行命令,可以使用三方库paramiko,安装方法如下:

$ pip install paramiko

使用示例如下:

import paramiko

ssh = paramiko.SSHClient()
ssh.connect(hostname='主机地址', port=22, username='登陆用户名', password='登陆密码')
stdin, stdout, stderr = ssh.exec_command('ls /root/')  # 执行shell命令
print('命令行返回')
print(stdout.read().decode())

其中stdin、stdout、stderr分别表示系统标准输入、系统标准输出、系统标准错误输出。使用返回的stdout.read()可以得到系统返回的输出内容二进制数据,decode后返回字符串格式的远程服务器的命令行返回。

作者:韩志超

出处:https://www.cnblogs.com/superhin/p/16259742.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

如有问题,请微信联系 superz-han,并发送原文链接。

posted @   韩志超  阅读(4992)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu