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() #字典转为列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值