一、安装第三方工具箱(原作者:main_h_)

二、文件读取(tip:文件以什么编码保存的,一定要用什么编码进行读取,这样才不会乱码)
1)文件的普通读取
1 f = open(file="破阵子·为陈同甫赋壮词以寄之.txt",mode="r",encoding="GBK") 2 data = f.read() 3 print(data) 4 f.close()
2)以字节方式读入文件
1 f = open(file="破阵子·为陈同甫赋壮词以寄之.txt",mode="rb") 2 data = f.read() 3 print(data) 4 f.close()
3)当我们不知道或忘记了文件是以什么编码进行保存的时候,我们可以通过第三方工具箱chardet进行猜测
1 #安装第三方工具箱 chardet 2 ## 用pip3命令 例:pip3 Install chardet 3 ## 用chardet模块来尝试判断文件的编码 4 import chardet 5 f = open("破阵子·为陈同甫赋壮词以寄之.txt","rb") 6 data = f.read() 7 f.close() 8 print(chardet.detect(data)) 9 # {'language': 'Chinese', 'encoding': 'GB2312', 'confidence': 0.99} 10 ## confidence 自信程度
4)循环逐行读出
1 #循环读取每一行进行输出显示 2 ##单独print(line)的时候,每一行中间都会有一行空行,这是因为print本身会打印换行符 3 ##那怎么办呢?直接把每一此读取出来的行把换行符进行替换掉即可,那应该写成这样:print(line.replace("\n","")) 4 ##tip: \n 换行符 \t TAB键 5 f = open("破阵子·为陈同甫赋壮词以寄之.txt","r",encoding="GB2312") 6 for line in f: 7 print(line.replace("\n","")) 8 f.close()
5)文件的写入操作
1 #文件的写入(Tip:像这样写入,是会把原先的文件进行删除后再写入内容的操作) 2 ##在py3中,可以这样写,这样写它会以GBK的编码进行写入 3 f = open("破阵子.txt","w",encoding="GBK") 4 f.write("八百里") 5 f.close() 6 ##也可以写成这样,这样它就肯定是以GBK的编码进行写入 7 f = open("破阵子.txt","w",encoding="GBK") 8 f.write("八百里".encode("GBK")) 9 f.close() 10 #追加字符 append_bytes 简写 ab 11 ##tip:这样只会在文件的末尾追加一行 12 f = open("破阵子.txt","ab") 13 f.write("\n沙场秋点兵".encode("gbk")) 14 f.close()
6)文件的混合操作
1 #混合模式 读写:r+ 写读:w+(写读几乎没有应用场景,因为它是把原先的文件删掉,在创建一个新的文件进行写入操作) 2 f = open("破阵子.txt","r+",encoding="gbk") 3 print("content: ",f.read()) 4 5 f.write("\n马儿飞快") 6 f.write("\n了却君王天下事") 7 f.write("\n赢得身前生后名,可怜白发生") 8 #这里为什么没有读出来呢,是因为光标在写入内容的时候已经跳到文件的末尾,所以读不出来内容 9 #我们之所以能读成内容,是因为我们首次打开文件的时候,光标是在文件的开头 10 print("new content: ",f.read())
7)文件的其它函数
1 # 在GBK编码中,一个汉字代表两个字节,在utf-8中,一个汉字代表三个字节 2 # read()读的是字符,例:read(1) 3 # seek()和tell()读的是字节 4 # seek()把光标移到什么位置 5 # tell()获取光标所在位置 6 # flush()强制把内存的内容写到文件,相当于保存操作 7 # truncate() 8 # 1)截断字符,如果没传参数,那么只截取光标位置为0的字符,相当于把内容清空 9 # 2)如果这样写 10 # f = open("file.txt","r+",encoding="utf-8") 11 # f.seek(3) 12 # f.truncate() 13 # f.flush() 14 # #那么truncate会从3字节的位置往左开始截取字符,截取到的字符重新写入原先的文件,原先文件的内容清空 15 # 3)truncate()文件的打开方式必须是读写(r+) 16 # 4)如果truncate(3)传入了参数,那么它是从光标0开始截,截取指定的字符数,并把原先的文件删除掉,在重新往里面写入截取到的字符 17 f = open("破阵子.txt","r+",encoding="gbk") 18 #移动到字节2的后面,再读取一个字 19 print(f.tell()) 20 f.seek(2) 21 print(f.tell()) 22 f.truncate() 23 f.flush() 24 f.close()

浙公网安备 33010602011771号