2018-11-23學習筆記

2.6 使用for循環遍歷文件

打開文件:python

open方式:服務器

r:以只讀方式打開,文件不存在會報錯函數

w:以寫方式打開,文件不存在會建立,文件存在會被覆蓋spa

a:以追加模式打開,文件存在會在文件最後追加,文件不存在會建立指針

r+:以讀寫模式打開對象

w+:以讀寫模式打開(參見w)內存

a+:以讀寫模式打開(參見a)字符串

rb:以二進制寫模式打開string

wb:以二進制寫模式打開(參見w)it

ab:以二進制追加模式打開(參見a)

rb+:以二進制讀寫模式打開(參見r+)

wb+:以二進制讀寫模式打開(參見w+)

ab+:以二進制讀寫模式打開(參見a+)

 

1. 默認以r方式打開

 

2. 以其餘方式打開

 

3. fd = open('/root/file') 用內置函數open打開文件

fd.close() 使用open內置函數打開後,使用fd.close()關閉;

讀取內容時指針會指向相應的位置,讀完顯示空字符串;

 

fd.read() 讀取所有內容,從頭至尾;返回的是字符串;

fd.read(2) 讀取兩位;

fd.readline() 每運行一次讀取一行;指針到最後返回空字符串;

fd.readlines() 以列表形式讀取

fd.next() 運行一次顯示一行

 

4. fd = open('/root/file', 'w') 以w方式打開文件

只接受字符串,不支持數值;

文件內容會被覆蓋;

寫入完成後執行fd.close();

5. fd = open('/root/file', 'a') 以a方式打開文件

6. 腳本示例:

#!/usr/bin/python

fd = open('/root/file')

for line in fd.readlines():

print line,

注:文件裏自己有換行符,line後面加上逗號抑制print的換行符,否則會出現空行;

當文件很大時fd.readlines會佔用很大內存,因此建議使用下面腳本:

 

#!/usr/bin/python

fd = open('/root/file')

for line in fd:

print line,

注:for line in fd: 中fd是對象,循環時是遍歷一遍取一次數據,不佔用內存;


2.7 使用while循環遍歷文件

1. while循環使用open遍歷文件

#!/usr/bin/python

 

fd = open('/root/file')

while True:

x = fd.readline()

if not x:

break

print x,

fd.close()

注:循環遍歷文件時結束時儘可能fd.close()關閉文件;

 

2. while 中使用with open遍歷文件

不須要close了;

格式:with open() as xxx:

 

#! /usr/bin/python

with open('/root/file') as fd:

while 1:

line = fd.readline()

if not line:

break

print line,


2.8 統計系統剩餘的內存

1. 查看系統剩餘內存

free 命令

cat /proc/meminfo

 

2. 字符串的startswith()方法:

判斷是否有以指定字符串開頭的行;

返回的是bool值,true或false;

 

3. 字符串的split()方法:

以空格或則tab鍵分割,並在輸出爲列表;

4. 統計系統剩餘內存,以及使用百分比:

#! /usr/bin/python

with open('/proc/meminfo') as fd:

for line in fd:

if line.startswith('MemTotal'):

total = line.split()[1]

continue

if line.startswith('MemFree'):

free = line.split()[1]

break

persent = '%.2f' % ((float(free)/float(total))*100)+'%'

print 'free:'+ '%.2f' % (int(free)/1024.0)+'M'

print 'free%:'+ persent

注:

float()轉換成浮點型

‘%.2f是字符串格式化並保留小數點後兩位


2.9 數據類型轉換計算(計算mac地址)

1. 十六進制字符串轉爲十進制

  • int('12' ,16)
  • int('0x12' , 16)
  • 0x表示16進制

 

2. 十進制轉成十六進制

hex(10)

3. 十進制轉換字符串

4. 字符串轉成數字

5. python計算一個mac地址的下個地址

一般服務器裏有多個網卡的話,網卡的mac地址基本都是挨着的。

#! /usr/bin/env

mac = '52:54:00:0c:9f:0a'

last_two = mac[-2:]

front_mac = mac[:-2]

plus_one = int(last_two ,16) + 1

if plus_one in range(10):

new_last_two = '0' + hex(plus_one)[2:]

elif len(hex(plus_one)[2:]) == 1:

new_last_two = '0' + hex(plus_one)[2:]

 

next_mac = front_mac + new_last_two

print next_mac


3.0 數據類型轉換(列表與字典相互轉換)

1. 字符串轉列表

list[string]

2. 列表轉字符串

‘’.join(list)

3. 字符串轉元組

tuple(string)

4. 元組轉字符串

''.join(tuple)

‘s’.join(): s 表示用什麼分割字符串

5. 列表與元組互相轉換

6. 字典轉換成列表

字典的items()方法

7. 列表轉爲字典

dict()

相關文章
相關標籤/搜索