Python中如何调用Linux命令
一、使用os模块
In [1]: import os #导入os模块
In [2]: os.system('ls')
anaconda-ks.cfg
epel-release-7-5.noarch.rpm
ipython-4.1.2
ipython-4.1.2.tar.gz
pip-8.1.2
pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a.gz
Out[2]: 0
In [3]: a=os.system('ls') ##得到的是执行的命令的返回值,并不是执行结果
anaconda-ks.cfg
epel-release-7-5.noarch.rpm
ipython-4.1.2
ipython-4.1.2.tar.gz
pip-8.1.2
pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a.gz
In [4]: a #执行ls命令的返回值,成功,为0
Out[4]: 0
In [5]: b=os.popen('ls').readlines() #将得到的结果直接赋值给b列表
In [6]: b #ls执行结果输出到内存,再全部读取赋值给b列表
Out[6]:
['anaconda-ks.cfg\n',
'epel-release-7-5.noarch.rpm\n',
'ipython-4.1.2\n',
'ipython-4.1.2.tar.gz\n',
'pip-8.1.2\n',
'pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a.gz\n']
>>>os模块中常见方法(Linux命令)
os.remove():删除文件
os.rename():重命名文件
os.walk():生成目录树下的所有文件名
os.chdir():改变目录
os.mkdir/makedirs:创建目录/多层目录
os.rmdir/removedirs:删除目录/多层目录
os.listdir():列出指定目录的文件
os.getcwd():取得当前工作目录
os.chmod():改变目录权限
os.path.basename():去掉目录路径,返回文件名
os.path.dirname():去掉文件名,返回目录路径
os.path.join():将分离的各部分组合成一个路径名
os.path.getsize():返回文件大小
os.path.exists():是否存在
os.path.isabs():是否为绝对路径
os.path.isdir():是否为目录
os.path.isfile():是否为文件
二、使用commands模块
注意:该模块用于Python2,到了Python3不推荐使用
In [7]: import commands #导入commands模块
In [8]: c=commands.getoutput('ls') #ls命令执行结果,字符串形式赋值给c变量
In [9]: c
Out[9]: 'anaconda-ks.cfg\nepel-release-7-5.noarch.rpm\nipython-4.1.2\nipython-4.1.2.tar.gz\npip-8.1.2\npip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a.gz'
In [10]: d=c.split('\n') #对变量c,指定分隔符\n分隔,列表形式赋值给d
In [11]: d
Out[11]:
['anaconda-ks.cfg',
'epel-release-7-5.noarch.rpm',
'ipython-4.1.2',
'ipython-4.1.2.tar.gz',
'pip-8.1.2',
'pip-8.1.2.tar.gz#md5=87083c0b9867963b29f7aba3613e8f4a.gz']
三、read、readline、readlines区别
1、read()全部取出,放到字符串里
2、readline()方法会将内存空间里的内容一次性只读一行,放到一个字符串里
3、readlines()方法会将内存空间里的内容一次性全部取出来,放到一个列表里

四、Python脚本实践
1、编写一个python脚本实现输出linux里的所有的用户的信息,格式如下:
username is root uid is 0
username is xiaojin uid is 200
username is bin uid is 10
方式一:
#!/usr/bin/python
import commands
user_str=commands.getoutput('cat /etc/passwd')
user_list=user_str.splitlines() #列表形式分隔文件内容(默认按行分隔)
for i in user_list:
u_info=i.split(':')
print "username is ",u_info[0],"uid is ",u_info[2]
方式二:
#!/usr/bin/python
import os
userlines=os.popen("cat /etc/passwd").readlines()
for i in userlines:
user_info=i.split(":")
print "username is",user_info[0],"\tuid is",user_info[2]
2、数值脚本
1.提醒用户输入内容范围是0-100
2.判断用户输入的内容,如果不是数字给予提醒
3.输出用户输入的内容
#!/usr/bin/python
u_grade=raw_input("please input your grade:")
if u_grade.isdigit(): #isdigit()将字符串转换成数的方法
if 0<=int(u_grade)<=100:
print "your grade is",u_grade
else:
print "please input the range of number 0-100"
else:
print "It's not a valid number,try again"
Python中如何调用Linux命令的更多相关文章
- 如何在java程序中调用linux命令或者shell脚本
转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...
- java程序中调用Linux命令Windows命令
目前总结的方法: 调用Linux简单的命令行,设置文件夹权限755 String scriptDir = "/home/wenf"; String cmd = "chmo ...
- 工作中常用的Linux命令:ipcs/ipcrm命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式 ipcs [resource-option ...
- php通过system()调用Linux命令问题
最近在做php和linux crontab的联调,发现php在linux下的权限问题需要引起注意,调试问题的过程中发现有许多问题前人说的比较零散,我在这里汇总,顺带抛砖引玉一下. 1.$result= ...
- Python——在Python中如何使用Linux的epoll
在Python中如何使用Linux的epoll 目录 序言 阻塞socket编程示例 异步socket的好处以及Linux epoll 带epoll的异步socket编程示例 性能注意事项 源代码 序 ...
- Spark调用Linux命令实现解压和压缩功能
一.应用场景 在Spark程序中调用Linux命令,实现一些程序难以实现的功能,例如:发送模拟邮件.文件打包或解压等等 二.代码实现 package big.data.analyse.linux im ...
- Java调用Linux命令执行
调用方式 Java调用linux命令执行的方式有两种,一种是直接调用linux命令,一种是将linux命令写到.sh脚本中,然后调用脚本执行. 详细说明 直接调用:使用java中lang包下面的Run ...
- 工作中常用的Linux命令:mkdir命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...
- 工作中常用的Linux命令:crontab命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...
随机推荐
- (原创)看我用各种姿势在手机和PC查看到连接到的wifi密码
今天一个女神来我家做客,她问我WiFi密码,然而我却奇迹般的忘记了(特么的当时心里一万个草泥马踏过去),让我在她面前尴尬求子的,所以为了防止你们也出现这种情况,我特地把各种方法整理了一下,那么感兴趣的 ...
- C# 读取Execl和Access数据库
第一次写,请大家指教!!话不多说 直接走代码! /// <summary> /// 打开文件 /// </summary> /// <param name="s ...
- centos系统修改网络配置注意事项
这也是无意之中发现的,我在做一个远程修改工控机网络配置的程序, 网络配置参数/etc/sysconfig/network-scripts/ifcfg-enp1s0下面,当然名字可能不一样ifcfg-e ...
- SQL中LEFT JOIN 和 inner join 的区别
student表 sc 表 首先where条件a.Sid = b.Sid 查询 SELECT * FROM student a,sc b WHERE a.Sid = b.Sid GROUP BY a. ...
- 那些过目不忘的无线端交互设计(DRIBBBLE GIF动态图)
Dribbble精选:Dribbble上令人惊叹的无线端交互设计!来自全球牛人们的奇思妙想,新颖动人的交互在这一张张GIF动态图上一览无余!当然界面一样打动人心,腾出手点赞的同时!记得另存哟:) 作者 ...
- NUMBER_GET_NEXT 获取编号 遇到关于按年度编号的问题
最近给财务做了一个平台,在系统创建一些特殊类型的合同,需要生成合同编号:财务要求 合同类型+公司代码 +年+三位流水号, eg:CP6008-2017001 SNRO 子对象数据元素就是 公司代码 不 ...
- jt格式文件与网格压缩
jt格式文件与网格压缩 介绍 jt是一种3D数据格式,主要用于工业,产品可视化,数据交换,并且西门子在2012推动jt成为ISO国际标准.在文件尺寸方面,采用了不少专门的压缩方法,比较轻量化. jt文 ...
- OpenCV探索之路(十):图像修复技术
在实际应用中,我们的图像常常会被噪声腐蚀,这些噪声或是镜头上的灰尘或水滴,或是旧照片的划痕,或者是图像遭到人为的涂画(比如马赛克)或者图像的部分本身已经损坏.如果我们想让这些受到破坏的额图片尽可能恢复 ...
- Java基础知识二次学习--第七章 容器
第七章 容器 时间:2017年4月27日15:08:30 章节:07章01节~07章04节 视频长度:20:21 +12:38 +3:55 +2:57 内容:容器API 心得: Java API ...
- 8611 大牛之路I
#include<stdio.h> ]; int main() { int i, n, m, sum, x, y; scanf("%d%d", &n, & ...