如何将执行的 shell 命令的结果存储在 python 中的变量中?[重复]
- 2024-11-01 08:41:00
- admin 原创
- 55
问题描述:
我需要将执行的 shell 命令的结果存储在变量中,但我无法让它工作。我尝试过:
import os
call = os.system("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'")
print call
但是它在终端中打印结果,并将调用的值打印为零,可能表示成功。如何将结果存储在变量中?
解决方案 1:
改用subprocess
模块:
import subprocess
output = subprocess.check_output("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'", shell=True)
编辑:这是 Python 2.7 中的新功能。在早期版本中,这应该有效(命令重写如下):
import subprocess
output = subprocess.Popen(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'], stdout=subprocess.PIPE).communicate()[0]
附注:你可以重写
cat syscall_list.txt | grep f89e7000
到
grep f89e7000 syscall_list.txt
您甚至可以用一个awk
脚本替换整个语句:
awk '/f89e7000/ {print $2}' syscall_list.txt
导致:
import subprocess
output = subprocess.check_output(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'])
解决方案 2:
在 Python 3 中你可以使用
import subprocess as sp
output = sp.getoutput('whoami --version')
print (output)
``
解决方案 3:
os.popen 适用于此。popen - 打开一个管道或从命令打开一个管道。返回值是连接到管道的打开文件对象,可以读取。split('\n') 将输出转换为列表
import os
list_of_ls = os.popen("ls").read().split('
')
print list_of_ls
import os
list_of_call = os.popen("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'").read().split('
')
print list_of_call
解决方案 4:
对于这种情况, commands.getstatusoutput很适合。(自 Python 2.6 起已弃用)
import commands
print(commands.getstatusoutput("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'"))
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD