python_wholeweek2

编码方式

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)

posted @   yybokeyuan  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示