Python按特定格式实现文件读写

#! /usr/bin/env python
#coding=utf-8

class ResultFile(object):

    def __init__(self, res):
        self.res = res

    def WriteFile(self):
        fp = open('pre_result.txt', 'w')
        print 'write start!'
        try:
            for item in self.res:
                fp.write(item['host'])
                fp.write('\r')
                fp.write(str(item['cpu']))#write方法的实参需要为string类型
                fp.write('\r')
                fp.write(str(item['mem']))
                fp.write('\n')
        finally:
            fp.close()
            print 'write finish!'

    def ReadFile(self):
        res = []
        fp = open('pre_result.txt', 'r')
        try:
            lines = fp.readlines()#读取出全部数据,按行存储
        finally:
            fp.close()
        for line in lines:
            dict = {}
            #print line.split() #like['compute21', '2', '4']
            line_list = line.split() #默认以空格为分隔符对字符串进行切片
            dict['host'] = line_list[0]
            dict['cpu'] = int(line_list[1])#读取出来的是字符
            dict['mem'] = int(line_list[2])
            res.append(dict)

        return res



if __name__ == '__main__':
    result_list=[{'host':'compute21', 'cpu':2, 'mem':4},{'host':'compute21', 'cpu':2, 'mem':4},
                 {'host':'compute22', 'cpu':2, 'mem':4},{'host':'compute23', 'cpu':2, 'mem':4},
                 {'host':'compute22', 'cpu':2, 'mem':4},{'host':'compute23', 'cpu':2, 'mem':4},
                 {'host':'compute24', 'cpu':2, 'mem':4}]

    file_handle = ResultFile(result_list)
    #1、写入数据
    #print 'write start!'
    file_handle.WriteFile()
    #print 'write finish!'
    #2、读取数据
    res = file_handle.ReadFile()
    print res

写入的文件:
这里写图片描述
每一行的数据之间其实已经加入空格。

运行结果:

write start!
write finish!
[{'mem': 4, 'host': 'compute21', 'cpu': 2}, {'mem': 4, 'host': 
'compute21', 'cpu': 2}, {'mem': 4, 'host': 'compute22', 'cpu': 2}, 
{'mem': 4, 'host': 'compute23', 'cpu': 2}, {'mem': 4, 'host': 
'compute22', 'cpu': 2}, {'mem': 4, 'host': 'compute23', 'cpu': 2}, 
{'mem': 4, 'host': 'compute24', 'cpu': 2}]

实现了按原有格式写入和读取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值