关于编码的问题:

在平时编写代码,涉及到打开文件时,常常遇到字符编码的报错,

通过总结,得出以下规律

 如果在操作过程中涉及到调用文本文档,一定要在文本文档开头申明编码方式(# 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')

  

最新文章

  1. Android点击空白处,隐藏软键盘
  2. 从本地向 Github 上传项目步骤攻略(快速上手版)
  3. spring mvc参数绑定
  4. yum自动脚本
  5. ural 1114,计数dp
  6. win32 汇编打造 wget 体积3kb
  7. Python之路第五天,基础(5)-序列化和字符串格式化
  8. WebApi统一输出接口
  9. hash实现锚点平滑滚动定位
  10. No input file specified. phpStudy nginx报错解决方案
  11. python处理日志文件
  12. ApocalypseSomeday
  13. webpack 配置全局 jQuery 对象
  14. 【python深入】dict和list实现排序:sorted()和lambda的使用
  15. 矩形嵌套(dp)
  16. Ubuntu下的init.d管理update-rc.d
  17. [POI2015]Pieczęć
  18. 从gentoo回归Arch,上组图
  19. Windows下磁盘无损重新分配
  20. UVA.548 Tree(二叉树 DFS)

热门文章

  1. js中常用的正则表达式
  2. Spring-boot整合Redis,遇到的问题
  3. HTML5和CSS3工具资源汇总
  4. vue keep-alive缓存问题
  5. Android studio的ERROR: Unable to resolve dependency for 错误
  6. opencv2.4.9+vs2012安装配置
  7. 笔记45 Hibernate快速入门(二)
  8. PHP算法之电话号码的字母组合
  9. vue-cli搭建vue开发环境
  10. delphi xe10 手机程序事件服务操作、退出键操作