CSIC_716_20191108【文件的操作,以及彻底解决编码问题的方案】
关于编码的问题:
在平时编写代码,涉及到打开文件时,常常遇到字符编码的报错,
通过总结,得出以下规律
如果在操作过程中涉及到调用文本文档,一定要在文本文档开头申明编码方式(# 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')
CSIC_716_20191108【文件的操作,以及彻底解决编码问题的方案】的更多相关文章
- 多线程协作 FileStream文件读写操作,读写冲突解决
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- Java文件读写操作指定编码方式防乱码
读文件:BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符.数组和行的高效读取. 可以指定缓冲区的大小,或者可使用默认的大小.大多数情况下,默认值就足够大了. 通常,Re ...
- day08文件操作的三步骤,基础的读,基础的写,with...open语法,文件的操作模式,文件的操作编码问题,文件的复制,游标操作
复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5 ...
- day4-基础 字符串操作,文件操作,字符转编码
1.字符串用法 name = 'daniel' print(name.capitalize()) #首字母大写 >>>daniel print(name.count('a')) #统 ...
- python文件相关操作
Python文件相关操作 打开文件 打开文件,采用open方法,会将文件的句柄返回,如下: f = open('test_file.txt','r',encoding='utf-8') 在上面的代码中 ...
- 记录我的 python 学习历程-Day08 文件的操作
文件操作的初识 用 python 代码对文件进行各种操作. 基本构成: 文件路径:path 打开方式:读.写.追加.读写.写读-- 编码方式:utf-8 / gbk / gb2312-- f = op ...
- Qt文件读写操作
原文地址:https://www.cnblogs.com/flowingwind/p/8336159.html QFile Class 1.read读文件 加载文件对象 QFile file(&qu ...
- QT5 文件读写操作
QFile Class 1.read读文件 加载文件对象 QFile file("文件地址"); 打开加载的文件file.open(打开方式); 操作文件 关闭打开的文件file ...
- PHP 文件夹操作「复制、删除、查看大小」递归实现
PHP虽然提供了 filesize.copy.unlink 等文件操作的函数,但是没有提供 dirsize.copydir.rmdirs 等文件夹操作的函数(rmdir也只能删除空目录).所以只能手动 ...
随机推荐
- Hadoop 基础知识
Hadoop 数据是存储在HDFS, Mapreduce 是一种计算框架,负责计算处理. HDFS上的数据存储默认是本地节点数据一份,同一机架不同节点一份,不同机架不同节点一份.默认是存储3份 HDF ...
- the blank final field factors may not have been initialized
Q1: why we should initialize final field before completion of new instance? final means no changeabl ...
- UIPageViewController看这篇就够了
先说初始化 - (UIPageViewController *)PageViewController{ if(!_PageViewController){ //书脊位置,只有在UIPageViewCo ...
- Vue-cli开发笔记一----------项目的结构
配置文件package.json: 搜索了配置的原理:https://segmentfault.com/a/1190000000344102 里面讲到:npm会在package.json文件中找scr ...
- nodejs 模板引擎ejs的简单使用(3)
1.ejs <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...
- 解决在移动端上 click事件延迟300 毫秒的问题 fastclick.js
1 为什么会发生延迟300毫秒的问题 移动设备上的浏览器默认会在用户点击屏幕大约延迟300毫秒后才会触发点击事件,这是为了检查用户是否在做双击.为了能够立即响应用户的点击事件,才有了FastClick ...
- svg实现绘制路径动画
1,首先用svg绘制一条path路径,然后进行如下操作 ps: 下面是svg中两个属性及值的意义 stroke-dasharray是让你指定画出的线段每段的长度,第二个值是各段之间空隙的长度. str ...
- leetcood学习笔记-437-路径总和③**
题目描述: 方法一:栈 class Solution(object): def pathSum(self, root, sum): """ :type root: Tre ...
- Delphi流
一.流的概念 流简单说是建立在面向对象基础上的一种抽象的处理数据的工具,它定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员只需掌握对流进行操作,而不用关心流的另一头数据的真正流向.其实 ...
- HTML中的相对路径与绝对路径
路径 实际工作中,通常新建一个文件夹专门用于存放图像文件,这时再插入图像,就需要采用“路径”的方式来指定图像文件的位置. 路径可以分为: 相对路径和绝对路径 相对路径 图像文件和HTML文件位于同一文 ...