Python逐行合并两个文件内容

描述:

  1.txt内容(IP地址)

192.168.1.212
192.168.1.213
192.168.1.214
192.168.1.215

  2.txt内容(主机描述)

测试数据库-DB01
测试数据库-DB02
测试-APP01
测试-APP02

 

1、第一版(错误) 

with open('E:/1.txt') as f1,open('E:/2.txt',encoding='UTF-8') as f2:
    for line in f1.readlines():
        print(line.strip('\n'))
    for newline in f2.readlines():
        print(newline.strip('\n'))
        with open('E:/b.txt', 'a') as i:
            i.write("""HOSTNAME:{IP}
NAME:{HOST}
IP:{IP}
    
""".format(IP=line.strip('\n'),HOST=newline.strip('\n')))

问题:IP相同,都为1.txt中的最后一个IP。

2、第二版(正确)

def read_file(filename):
    with open(filename, encoding='utf-8') as file_obj:
        for line in file_obj:
            yield line.strip()
def write_fiel(filename,mode='a'):
    with open(filename,mode,encoding='utf-8') as file_obj:
        f1 = read_file('E:/1.txt')
        f2 = read_file('E:/2.txt')
        try:
            while True:
                file_obj.write("""HOSTNAME:{IP}
NAME:{HOST}
IP:{IP}

""".format(IP=next(f1).strip('\n'), HOST=next(f2).strip('\n')))
        except StopIteration:
            pass
if __name__ == '__main__':
     write_fiel('E:/3.txt')

3、第三版(和第二版没什么区别)

def read_file (filename):
    with open(filename, encoding='utf-8') as file_obj:
        for line in file_obj:
            yield line.strip()

with open('E:/b.txt', 'a') as i:
    f11 = read_file('E:/1.txt')
    f22= read_file('E:/2.txt')
    try:
        while True:
            i.write("""HOSTNAME:{IP}
NAME:{HOST}
IP:{IP}
    
""".format(IP=next(f11).strip('\n'),HOST=next(f22).strip('\n')))
    except StopIteration:
        pass

 

转载于:https://www.cnblogs.com/xue0123/p/9555504.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值