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"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM