python 基础(文件)

文件句柄:可简单理解为应该内存对象

open()函数  参考 https://www.runoob.com/python3/python3-file-methods.html

读、写、追加

 1 '''
 2 txt文件内容:
 3 I
 4 am
 5 very
 6 handsome
 7 '''
 8 #读(mode = r)
 9 f = open('test.txt','r',encoding='utf-8')
10 x = f.readline() #读取文件的一行,这时文件句柄移动到下一行的位置
11 x = f.readlines() #从文件句柄位置开始读取整个文件内容,并将每一行作为一个元素添加到一个列表
12                   #当一个文件很大时readlines()是行不通的,他会把整个文件加载到内存,再执行后面的代码
13                 #这回耗费很多时间和消耗大量的内存
14 
15 # 可以用读一行打印一行的方式加快文件的读取
16 f.seek(0)  #将文件句柄挪到文件的开始位置
17 for l in f:
18     print(l.strip(),end=' ')
19                                 #结果 I am very handsome
20 
21 #这个方法在一边读文件一边写文件是很有用的
22 #写(mode = w) 如果目标文件不存在会创建一个,但是如果存在的话会把原文件内容删除,慎用!!!
23 # 备份一个test.txt,名为test_bak.txt
24 f.seek(0)
25 f_w = open('test_bak.txt','w')  #encoding 默认utf-8
26 for l in f:
27     f_w.write(l)
28 #完成备份
29 #追加 (mode = a)在原文件的后面追加内容,是不可读的,如果文件不存在会创建一个
30 f_a = open('test.txt','a')
31 f_a.write('lalala')    #'lalala' 被添加到了test.txt的末尾
32 f_a.close()
33 f_w.close()
34 f.close()

读写、写读、追加读写

 1 '''
 2 txt文件内容:
 3 I
 4 am
 5 very
 6 handsome
 7 '''
 8 #读写(mode = r+)
 9 with open('test.txt','r+') as f_r_p,\
10     open('test_bak.txt','w+') as f_w_p,\
11     open('test_a.txt','a+') as f_a_p:
12     '''
13     用with语法可以省略最后的文件关闭操作,同时可以打开多个文件
14     1.w+,还是会将原文件内容删除然后在进行写读等操作,慎用!!!
15     2.r+,非常实用,但如果要对原文件直接更改是不行的,比如有'I am very handsome'这么一个
16     字符串,如果想把'I'改为'You',见下面代码21-24行,发现打印的结果还是'I',没有变为想要替换
17     的'You',因为在硬盘里的文件已经写死了,硬盘里的后面数据是不会随着前面的数据的变化而前
18     后挪动的,所以要修改文件可以采用复制的方法,就是在创建一个文件,并将修改的内容写入新的
19     文件。
20     '''
21     x = f_r_p.readline()
22     x.replace('I\n','You\n')
23     f_r_p.seek(0)
24     print(f_r_p.readline())
25     #将test.txt文件,第一行改为'You',并写入test_a.txt
26     f_r_p.seek(0)
27     for l in f_r_p:
28         print(l,end='')
29         if l=='I\n':
30             f_a_p.write('You\n')
31         else:
32             f_a_p.write(l)

 二进制

1 #二进制写(mode = wb)
2 with open('bin.txt','wb') as f_wb:
3     f_wb.write(b'i am bin')
4 #二进制读(mode = rb)
5 with open('bin.txt','rb') as f_rb:
6     print(f_rb.readline())

 

点赞