zoukankan      html  css  js  c++  java
  • 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
    ',
     '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
    ']

    >>>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
    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 [10]: d=c.split('
    ')    #对变量c,指定分隔符
    分隔,列表形式赋值给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],"	uid 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"
  • 相关阅读:
    centos7 docker安装awvs
    screen命令简介-实现linux多窗口
    linux命令重命名
    iptables防止nmap扫描
    cobal strike could not start listener address already in use (bind failed)
    docker简介及安装
    「Sqlserver」数据分析师有理由爱Sqlserver之二-像使用Excel一般地使用Sqlserver
    「Sqlserver」数据分析师有理由爱Sqlserver之一-好用的插件工具推荐
    「PowerBI」分析服务多维数据结构重回关系数据库的一大绝招
    「数据分析」Sqlserver中的窗口函数的精彩应用之数据差距与数据岛(含答案)
  • 原文地址:https://www.cnblogs.com/geaozhang/p/7019672.html
Copyright © 2011-2022 走看看