python自動化運維學習第五天--檔案操作
阿新 • • 發佈:2018-12-04
迴圈遍歷檔案
使用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() #字典轉為列表