CSIC_716_20191108【文件的操作,以及彻底解决编码问题的方案】
2024-09-02 01:16:19
关于编码的问题:
在平时编写代码,涉及到打开文件时,常常遇到字符编码的报错,
通过总结,得出以下规律
如果在操作过程中涉及到调用文本文档,一定要在文本文档开头申明编码方式(# coding:XXXXX),否则python3解释器会默认为utf-8的编码方式,而常常在中文操作系统中默认生成的文本文档 是utf-8的格式,会出现报错。
上节讲到打开文件的编码方式有三种,r、w、a叫做纯净模式,
r+、w+、a+模式,在除了可读可写,其他特性与纯净模式一致。
打开文件的时候,光标永远在文档最开始的地方
f.seek(offset,whence)
offset:代表字节移动的个数(相对偏移度)
whence:指定光标从何处开始,有三个参数可选,0是从文档开头开始,1是从文档当前光标开始,2从文件末尾开始
当whence=1或2时,处理文件的一定要是b。
如果以rb模式打开,f.read(x),其中x表示移动的字节数
如果以rt模式打开,f.read(x),其中x表示移动的字符数
字节的光标移动,可以结合文件动态监控的程序理解
监听程序:
import time
with open(r'point.txt', 'r', encoding='utf-8') as rf, \
open(r'jianting.txt', 'a', encoding='utf-8') as af:
rf.seek(0, 2)
while True:
time.sleep(1)
res = rf.read()
if res:
af.write(res)
af.write('\n')
print('正在写入')
af.flush()
文件操作程序
import time modify_time = time.strftime('%Y-%m-%d %H:%M:%S')
with open(r'point.txt', 'a', encoding='utf-8') as af:
str1 = '神恶寇数据死地咚咚咚看到没'
af.write(str1 + f'修改时间:{modify_time}')
文件的修改
文件的修改目前有两种方式,一种是将文件所有内容取出来,将需要改变的内容取出来修改,然后再以写模式写入原文件
另一种方式是通过代码新建一个文件,将原文件内容取出来,将内容修改后存入新文件,然后导入os包,调用os.remove方法删除原文件,调用os.rename方法将新文件重命名为老文件名。详见代码
'''
方法1
'''
with open(r'作业文档gbk.txt', mode='r', encoding='gbk')as rf1:
res1 = rf1.read()
with open(r'作业文档gbk.txt', mode='w', encoding='gbk')as wf1:
new_contents = res1.replace('tank', 'DSB')
wf1.write(new_contents)
'''
方法2
'''
import os
with open(r'作业文档2gbk.txt',mode='r',encoding='gbk')as rf, \
open(r'作业文档2gbk_new.txt',mode='w', encoding='utf-8')as wf:
res2 = rf.read().replace('tank', 'DSB')
wf.write(res2)
os.remove('作业文档2gbk.txt')
os.rename('作业文档2gbk_new.txt', '作业文档2gbk.txt')
最新文章
- Android点击空白处,隐藏软键盘
- 从本地向 Github 上传项目步骤攻略(快速上手版)
- spring mvc参数绑定
- yum自动脚本
- ural 1114,计数dp
- win32 汇编打造 wget 体积3kb
- Python之路第五天,基础(5)-序列化和字符串格式化
- WebApi统一输出接口
- hash实现锚点平滑滚动定位
- No input file specified. phpStudy nginx报错解决方案
- python处理日志文件
- ApocalypseSomeday
- webpack 配置全局 jQuery 对象
- 【python深入】dict和list实现排序:sorted()和lambda的使用
- 矩形嵌套(dp)
- Ubuntu下的init.d管理update-rc.d
- [POI2015]Pieczęć
- 从gentoo回归Arch,上组图
- Windows下磁盘无损重新分配
- UVA.548 Tree(二叉树 DFS)