一、使用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命令的更多相关文章

  1. 如何在java程序中调用linux命令或者shell脚本

    转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...

  2. java程序中调用Linux命令Windows命令

    目前总结的方法: 调用Linux简单的命令行,设置文件夹权限755 String scriptDir = "/home/wenf"; String cmd = "chmo ...

  3. 工作中常用的Linux命令:ipcs/ipcrm命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式 ipcs [resource-option ...

  4. php通过system()调用Linux命令问题

    最近在做php和linux crontab的联调,发现php在linux下的权限问题需要引起注意,调试问题的过程中发现有许多问题前人说的比较零散,我在这里汇总,顺带抛砖引玉一下. 1.$result= ...

  5. Python——在Python中如何使用Linux的epoll

    在Python中如何使用Linux的epoll 目录 序言 阻塞socket编程示例 异步socket的好处以及Linux epoll 带epoll的异步socket编程示例 性能注意事项 源代码 序 ...

  6. Spark调用Linux命令实现解压和压缩功能

    一.应用场景 在Spark程序中调用Linux命令,实现一些程序难以实现的功能,例如:发送模拟邮件.文件打包或解压等等 二.代码实现 package big.data.analyse.linux im ...

  7. Java调用Linux命令执行

    调用方式 Java调用linux命令执行的方式有两种,一种是直接调用linux命令,一种是将linux命令写到.sh脚本中,然后调用脚本执行. 详细说明 直接调用:使用java中lang包下面的Run ...

  8. 工作中常用的Linux命令:mkdir命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...

  9. 工作中常用的Linux命令:crontab命令

    本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...

随机推荐

  1. Elasticserach学习笔记-01基础概念

    本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/e ...

  2. 2017Unity开发者大会备受关注的原因有哪些?

    Unite大会是由Unity举办的全球开发者大会,至今已有10年的历史.从最开始Unity开发者大会仅500人,到现在Unity大会已经增长到5000人,10倍的参与人数,Unity开发者大会仅仅用了 ...

  3. mysql5.6源码自动安装脚本

    将脚本与源码安装包放在同一目录下,执行脚本即可(执行脚本会使用yum安装依赖包) 安装完成之后,既可以使用mysql -uroot -p登录   脚本内容如下: [root@mysql src]# c ...

  4. django无法加载admin的静态内容的问题(Centos7+Nginx+uwsgi环境下)

    Nginx静态资源无法加载,导致admin没有CSS样式: 这个问题,主要是要理解: 1.Django不会去解析静态内容(css,js,img)等,而是交给Nginx去处理,所以nginx.conf要 ...

  5. 文件查找---find

    文件查找(find) 1 find 简单的说,就是实时查找指定的内容或条件.特点:最新.最快.最准确. 用法:find [查找路径] [查找条件] [找到后进行的动作]     eg. find /e ...

  6. Redis学习-发布/订阅

    Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息.Redis 客户端可以订阅任意数量的频道. 常用命令 命令 描述 复杂度 返回 PSUBS ...

  7. Java中HashMap源码分析

    一.HashMap概述 HashMap基于哈希表的Map接口的实现.此实现提供所有可选的映射操作,并允许使用null值和null键.(除了不同步和允许使用null之外,HashMap类与Hashtab ...

  8. linux c++爬虫(一)

    int main(int argc, void *argv[]) { ]; ; char ch; ) { switch(ch) { case 'v': version(); break; case ' ...

  9. 数塔,杭电oj-2048

    原题地址:http://i.cnblogs.com/EditPosts.aspx?postid=4077291 [Problem Description] 在讲述DP算法的时候,一个经典的例子就是数塔 ...

  10. Fast Walsh-Hadamard Transform——快速沃尔什变换

    模板题: 给定$n = 2^k$和两个序列$A_{0..n-1}$, $B_{0..n-1}$,求 $$C_i = \sum_{j \oplus k = i} A_j B_k$$ 其中$\oplus$ ...