下午小伙伴问了一个有趣的问题, 怎么用 Python 的 with 语句同时打开多个文件? 首先, Python 本身是支持同时在 with 中打开多个文件的 with open('a.txt', 'r') as a, open('b.txt', 'r') as b: print(a.read()) print(b.read()) 当然, 小伙伴的问题不可能这么简单, 他需要从打开一个列表中的所有文件, 而不是打开固定的一个文件, 这时候上面的语法显然就没法满足要求了. 幸运的是 with 语句
with open('a.csv','r') as f: for i in f: print(i) while True: a = f.readline() if not a: break f.readlines() 用with语句打开文件返回一个可以迭代的文件对象绑定在as后的变量f: 第一种:直接遍历文件对象,会自动使用IO缓存和内存管理,是一种很好的方法: 第二种:调用readline()方法,一次读取一行,也不会占用太大内存,但代码显得臃肿,而且,虽然readline()方法是用C实现的
同时打开三个文件,文件行数一样,要求实现每个文件依次读取一行,然后输出,我们先来看比较容易想到的写法: with open(filename1, 'rb') as f1: with open(filename2, 'rb') as f2: with open(filename3, 'rb') as f3: for i in f1: j = f2.readline() k = f3.readline() print(i, j, k) 注意这里只能对单个文件进行for循环读取,不能写成: for i
考虑如下的案例: 同时打开三个文件,文件行数一样,要求实现每个文件依次读取一行,然后输出,我们先来看比较容易想到的写法: with open(filename1, 'rb') as fp1: with open(filename2, 'rb') as fp2: with open(filename3, 'rb') as fp3: for i in fp1: j = fp2.readline() k = fp3.readline() print(i, j, k) 注意这里只能对单个文件进行for循
[对文件进行循环操作] fw = open('nhy','w') for line in fw: print('line:',line) #直接循环文件对象,每次循环的时候就是取每一行的数据 fw.flush() #把缓冲区里面的数据立即写到磁盘上. with open('nhy','w') as fw, open('nhy2','w') as fw2 : #使用with,可以自动关闭文件,待文件使用完后(用with打开多个文件的写法) fw.read() fw.write