目录
- 编码方式
- open函数的使用
- open进行写入时
- 有关于编码解码
- 前面的open函数使用加了一个r
- 绝对路径和相对路径的使用
- open函数的几种mode
- with open的使用(对比open函数而言
- 补充知识点,之前用过replace但是给忘了
- 附加对于python识别文本时的编码错误链接解释
编码方式
txt文件的编码方式已经是UTF-8了吗(2024年七月的wins10.22H系统中
open函数的使用
h = open(r'C:\Users\dell\Desktop\text1.txt',encoding = 'utf-8')##### ,encoding = 'utf-8'
open进行写入时
h = open(r'C:\Users\dell\Desktop\text1.txt','w',encoding = 'utf-8')##utf8的编码方式去读写
# print(h.readline()) ###读一行
# print(h.readline()) ###读下一行了
# print(h.readline())
h.write('我是用python写入的') ###全读出来
h.flush() ###快速刷入硬盘(一般写那个大型文件后面还要写入的时候,就会写一个flush,避免后面的先写入
h.close() ###关闭文件
有关于编码解码
print('文字'.encode('utf-8').decode('gbk'))
'''
由于中文一个字符在utf-8中占三个字节,而在gbk中占一个字节,所以'文字'二字占六个字节,以gbk解码时就会解成3个字
'''
前面的open函数使用加了一个r
###########补充open函数使用时加一个r的原因
print('1 23')
print('1\n2\t3')
print(r'\t1\n2') ###增加r时转义字符失效,\n和\t等失效
绝对路径和相对路径的使用
# ####绝对路径和相对路径
# 其实使用相对路径只要在一个工程文件下,就可以只写文件名路径即可
open函数的几种mode
# ######## r是只读
# fr = open(r'text1.txt',mode='r',encoding='utf-8')
# r_data = fr.read()
# print(r_data)
# fr.close()# ######## w是重写
# fw = open(r'text1.txt',mode='w',encoding='utf-8')
# w_data = fw.write('我是用write重新写入的')
# print(w_data)
# fw.close()# ######## a是续写
# fa = open(r'text1.txt',mode='a',encoding='utf-8')
# a_data = fa.write('\n后来增加')
# fa.close()# ######## rb# 打开的bytes类型,二进制 # 010101010110010
# frb = open(r'text1.txt',mode='rb')
# frb_data = frb.read()
# print(frb_data)
# frb.close()# ######## rt # 打开的text文本类型
# frt = open(r'text1.txt',mode='rt',encoding='utf-8')
# frt_data = frt.read()
# print(frt_data)
# frt.close()
with open的使用(对比open函数而言
# #################### 同open函数的应用,with open,法一
# with open('text1.txt', 'r',encoding='utf-8') as fr:
# data = fr.read() ###因为不建议边读边改,所以这个open执行读的功能
# print(data)
# new_data = data.replace('我','这个这个') ###先在py中进行更改
# print(new_data)
# with open('text1.txt', 'w',encoding='utf-8') as fw: ###改成text2之后就会再生成一个文件
# fw.write(new_data) ####在这里写入#####对应上面的方式还可以进行备份修改删除再重命名,法二
# with open('text1.txt', 'r',encoding='utf-8') as fr:
# data = fr.read() ###因为不建议边读边改,所以这个open执行读的功能
# print(data)
# new_data = data.replace('我','这个这个') ###先在py中进行更改
# print(new_data)
# with open('new_text.txt', 'w',encoding='utf-8') as fw: ###py会建一个text2
# fw.write(new_data) ####在这里写入
#
# import os
# os.remove('text1.txt')
# os.rename('new_text.txt','text1.txt')# ######还可以将法二进行精简,精简的法二
# with open('text1.txt', 'r',encoding='utf-8') as fr, \
# open('new_text.txt', 'w', encoding='utf-8') as fw:
# data = fr.read() ###因为不建议边读边改,所以这个open执行读的功能
# print(data)
# new_data = data.replace('我','这个这个') ###先在py中进行更改
# print(new_data)
# fw.write(new_data) ####在这里写入
#
# import os ###引入os操作
# os.remove('text1.txt')
# os.rename('new_text.txt','text1.txt')
补充知识点,之前用过replace但是给忘了
# s = 'hello world'
# s.replace('l', 'I')
# print(s) #########这里打印你会发现S并没有变化,因为字符串为不可变类型,替换的时候重新开辟了内存空间,需要重新赋变量
# ###在s.replace('l', 'I')前添加s1=,再打印s1就能得到新的了
附加对于python识别文本时的编码错误链接解释
一文搞懂Python文件读取报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte_gbk codec can't decode byte-CSDN博客
一文搞懂Python文件读取报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte | AI技术聚合 (aitechtogether.com)