1. 程式人生 > >python自動化運維學習第五天--檔案操作

python自動化運維學習第五天--檔案操作

迴圈遍歷檔案

使用open來開啟檔案
開啟模式:

  • r:以讀方式開啟(只能開啟存在的檔案)
  • w:以寫方式開啟(會覆蓋存在的檔案,檔案不存在會建立)
  • a:以追加方式開啟(檔案不存在會建立)
  • r+:以讀寫方式開啟
  • w+:以讀寫方式開啟(參考w)
  • a+:以讀寫方式開啟(參考a)
  • rb:以二進位制讀模式開啟(參考r)
  • wb:以二進位制寫模式開啟(參考w)
  • ab:以二進位制追加模式開啟(參考a)
  • rb+:以二進位制讀寫模式開啟(參考r+)
  • wb+:以二進位制讀寫模式開啟(參考w+)
  • ab+:以二進位制讀寫模式開啟(參考a+)

檔案物件的方法:
– close:關閉檔案
– write:寫檔案(只接收字串)
– read:讀檔案(讀取整個檔案內容)
– readline:讀一行
– readlines:讀多行(返回為list列表)

fd = open('/tmp/test.txt','a')  #開啟檔案,fd為檔案物件
fd.write("test\n")   #追加寫入
fd.read()     #讀取整個檔案
fd.read(5)     #讀取5個字元(讀取後指標停留在第五個字元後)
fd.readline()    #讀取一行資料
fd.readlines()   #讀取多行資料(整個檔案,比較佔記憶體,不建議使用)
fd.close() #關閉檔案(會自動儲存寫入內容) for line in fd: ##建議直接使用fd檔案物件遍歷,不佔用大量記憶體 print line,

使用with open 開啟檔案
with open不用關閉檔案,執行完自動關閉
語法格式,例

with open('/tmp/test.txt') as fd:
    while True:
        line = fd.readline()
        if not line:
            break
        print line,
三元表示式
da = x if
x > y else y list = [ x for x in xrange(10)]
例題

統計系統剩餘記憶體

#!/usr/bin/python
# -*- coding:utf-8 -*-
with open('/proc/meminfo') as fd:
    for line in fd:
        if line.startswith('MemTotal'):    ##startswith方法用來判斷是否以‘MemTotal’開頭
            total = line.split()[1]   ##split方法用來切割字串,預設使用空格切割
        if line.startswith('MemFree'):
            free = line.split()[1]
print "總記憶體:%.2fM,剩餘記憶體:%.2fM" % (int(total)/1024.0,int(free)/1024.0)

資料型別轉換

int(‘10’) ##字元轉換為整數(非數字字元轉換會報錯)
int(‘a’,16) ##十六進位制轉換為十進位制(超出十六進位制會報錯)
int(‘0xa’,16) ##十六進位制轉換為十進位制
hex(12) ##十進位制轉換為十六進位制

例題:

根據已知mac地址求下個mac地址

#!/usr/bin/python
# -*- coding:utf-8 -*-
macaddr = "00:0C:29:E3:5D:0A"
prefix_mac = macaddr[:-2]
last_two = macaddr[-2:]
plus_one = int(last_two, 16) + 1
if plus_one in range(16):
    new_last_two = hex(plus_one)[2:]  ##最後的[2:]是去掉十六進位制前面的‘0x’標識
    new_last_two = '0' + new_last_two
else:
    new_last_two = hex(plus_one)[2:]
new_macaddr = prefix_mac + new_last_two
print new_macaddr.upper()

‘’.join(list) #join方法可以把列表或元組轉為字串(前邊的‘’表示使用‘’連線列表元素,如果是‘.’則使用‘.’來連線列表各元素)
list(string) #字串轉列表
tuple(string) #字串轉元組
dict.items() #字典轉為列表