python编辑一个txt格式文本文件

Python012

python编辑一个txt格式文本文件,第1张

import re,os

def updateFile(file,old_str,new_str):

with open(file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:

for line in f1:

f2.write(re.sub(old_str,new_str,line))

os.remove(file)

os.rename("%s.bak" % file, file)

updateFile(r"D:\zdz\myfile.txt", "zdz", "daziran")#将"D:\zdz\"路径的myfile.txt文件把所有的zdz改为daziran

本文以txt 文本为例,只是介绍ANSI,Unicode,UTF-8 三种编码的文件的读写过程,对于编码不做深究了

一、用记事本另存为时,可以选择保存文本使用的的几种编码模式,分别为:

ANSI:默认保存的编码格式,采用本地操作系统默认的内码,简体中文一般为GB2312。

Unicode:UTF-16的小端字节序,加上BOM签名:0xFFFE。

Unicode bigendian:Unicode编码:UTF-16的大端字节序,加上BOM签名:0xFEFF。

UTF-8:编码格式是:UTF-8,其BOM为0xEF BB BF(UTF-8不区分字节序,这个BOM仅标志UTF-8编码)

Python对于读取的txt文件,最好在读取的时候进行decode成unicode编码,

def read_out(self):    with codecs.open(self.filename, 'r+') as get:        return get.read().decode('gbk')

然后再写入的时候进行encode成对应想要的编码类型,这样可以保证源文件的编码方式不会改变,且中文不会乱码

整个代码过程保持使用unicode编码方式利用try…except 来进行编码判别具体使用了那种编码方式

f.write(self.filename.encode('gbk'))

二、对于raw_input 通过键盘输入的文字,通过sys模块中的stdin.encodeing来进行解码

content = raw_input().decode(sys.stdin.encoding)

type(content)  是unicode

暂时这么多