如何使用Python3.4与Linux shell交互

news/2024/7/18 16:32:05 标签: python, linux
使用python来运维linux是非常简单轻松的一件事情,但是仅仅是一些交互式比较强的,比shell更灵活的一些工作时,可以使用python,如果是一些简单的查找,排序,等什么的,可以还用shell来完成,下面来看下在python3.4中,如何与Linux交互的。


python里面可以操作linux的命令有

1,os.system("cmd")
2,os.open("cmd")
3,spawn*
4,subprocess

在最新的python里,推荐使用subprocess来与shell通信,它会生成一个子进程来连接输出,输入,错误等shell下3中标准的输入输出流,并返回执行结果的状态码0和1,来判断本次执行命令的成功与失败。


下面来看一个小例子,首先,确保你的linux环境支持python3.4,如果不支持,你可以参考散仙的[url=http://qindongliang.iteye.com/blog/2119719]上篇文章[/url]来安装python3.4

首先,在linux,执行python命令找到最新的python3.4的路径,然后再py文件里声明头部路径,如果不知道python的具体安装路径,可以使用which python来查找路径
[code="java"]# py
pydoc pydoc3.4 python2 python3 python3.4-config python3.4m-config pyvenv
pydoc3 python python2.6 python3.4 python3.4m python3-config pyvenv-3.4
# which python3.4
/usr/local/python3.4/bin/python3.4
#
[/code]

写完脚本之后,先给脚本赋值权限,再执行:
[code="java"]# chmod +x b.py
# cat b.py
#!/usr/local/python3.4/bin/python3.4


import subprocess as t


v=t.call("ls")


print ("返回值: ",v)

# b.py
a.py b.py b.txt
返回值: 0
# [/code]

看下面的例子,注意python的shell执行,返回的是一个字符串,如果我们想逐行解析,需要使用如下方法:
[code="java"]# cat b.txt
id name
1 a

2 战三

3 b
# cat a.py
#!/usr/local/python3.4/bin/python3.4

import os
import subprocess as t


#var=t.getoutput("df -h")

#v=t.call("ls")

#var=t.getoutput("cat b.txt | grep a ")
var=t.getoutput("df -h | cat -n ")


for line in var.split("\n"):
print("这一行:" +line)


#print(var)


# a.py
这一行: 1 Filesystem Size Used Avail Use% Mounted on
这一行: 2 /dev/sda2 9.7G 2.9G 6.3G 32% /
这一行: 3 tmpfs 495M 0 495M 0% /dev/shm
这一行: 4 /dev/sda1 194M 28M 157M 15% /boot
这一行: 5 /dev/sda3 9.9G 948M 8.5G 10% /home
# [/code]

最后看下python的两种,生成行号的方式:
python">
tt="你好\n哈喽"

for i,it in enumerate(tt.split("\n")):
print(i,it)

for line in range(len(tt.split("\n"))):
print(line," ",tt.split("\n")[line])



输出结果如下:
0 你好
1 哈喽
0 你好
1 哈喽

http://www.niftyadmin.cn/n/789468.html

相关文章

kakfa 3.0 创建topic流程(源码)

文章目录1、通过create命令到组装创建topic需要的数据流程(scala部分)2、创建一个客户端,此客户端通过队列多线程异步发送创建topic的请求(1)runnable.call(队列和多线程执行)(2)getCreateTopicsCall(创建发送创建topic的requestBuilder)3、服务端创建topic的请求(h…

JS 之DOM range对象

DOM范围 DOM中的range对象是DOM2中新定义的接口。通过这个对象可以选择文档中的某个区域,而不必考虑节点的界限。 创建范围 document.createRange()创建一个范围,这个范围是range类型的实例。包含下面这些属性和方法。 startContainer:包含范…

图的存储结构(存储、遍历)

一、图的存储结构 1.1 邻接矩阵 图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为&…

kafka 3.0 日志定时清理(源码)

文章目录1、定时任务入口2、LopManager(这个是日志抽象层,实际逻辑不在这里)(1) 把日志清理加入定时任务中3、清理符合条件的日志(1)deletableSegments(把需要删除的segment加入待删除的集合)(2) deleteSegments(对待删除的segment集合删除)1…

Python3.4+Django1.7简单动态模板例子

[b][colorgreen][sizelarge]继上篇散仙写的Django入门,这次我们来看看如何在Django中,动态定义HTML模板,我们都知道,在其他的编程语言里有JSP,ASP,PHP等动态语言,可以直接在这种类似HTML的结构里编写HTML页面&#xff…

%1$s,%2$s等的用法

String.format(String format, Object... args)方法中: format:格式字符串。 如:%1$s,%1$d,%2$s...其中,%1$s表示第一个替换位置是以字符串类型放入,而%1$d是以整形放入,%2$s表示第二…

Python3.4+Django1.7+SQLite3实现增删改查

前2篇文章,散仙写了关于Django的入门安装,以及简单模拟数据库的MVC使用,那么本篇就来稍微深入下,来看看如何使用Django来实现一个增删改查的小例子:[b][colorgreen][sizelarge][table] |序号|名称|备注 |1|Win7|操作系…

手机新闻网站,手持移动新闻,手机报client,jQuery Mobile手机新闻网站,手机新闻网站demo,新闻阅读器开发...

我们坐在地铁。经常拿出新浪手机查看新闻。腾讯新闻,或者看新闻,等刷微信功能。你有没有想过如何实现这些目标。移动互联网。更活泼。由于HTML5未来,jQuery Moblie未来。今天我用jqm的移动新闻站点。 先看效果图: 好吧。我们来看看…