2018-11-23学习笔记

原创
2018/11/26 10:00
阅读数 58

2.6 使用for循环遍历文件

打开文件:

open方式:

r:以只读方式打开,文件不存在会报错

w:以写方式打开,文件不存在会创建,文件存在会被覆盖

a:以追加模式打开,文件存在会在文件最后追加,文件不存在会创建

r+:以读写模式打开

w+:以读写模式打开(参见w)

a+:以读写模式打开(参见a)

rb:以二进制写模式打开

wb:以二进制写模式打开(参见w)

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()


 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部