700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python读写文件的编码格式-UTF-8 GBK

Python读写文件的编码格式-UTF-8 GBK

时间:2024-06-20 07:39:04

相关推荐

Python读写文件的编码格式-UTF-8  GBK

做一个测试脚本,从文件夹A遍历所有的.txt格式文件,并打开文件逐行读取内容,写入到文件夹B里面。我们看读和写文件格式在是否指定为UTF-8时会发生什么错误。新建6个文件,汉字内容是“你好!”, 英文字符是"Hello"

代码如下

#coding=utf-8#coding=gbkimport os RootDir = R"E:\02_PythonTools\Fold-2\A\\"TargetDir = R"E:\02_PythonTools\Fold-2\B\\"def mkdir(path):path=path.strip()path=path.rstrip("\\")isExists=os.path.exists(path)if not isExists:os.makedirs(path)def del_file(path):ls = os.listdir(path)for i in ls:c_path = os.path.join(path, i)if os.path.isdir(c_path):del_file(c_path)else:os.remove(c_path)def list_all_files(rootdir):_files = []list = os.listdir(rootdir)for i in range(0,len(list)):path = os.path.join(rootdir,list[i])if os.path.isdir(path):_files.extend(list_all_files(path)) if os.path.isfile(path):_files.append(path)return _files'''**********************************************************************************BEGIN**********************************************************************************'''del_file(TargetDir)_fs = list_all_files(RootDir)for i in range (0,len(_fs)):filepath = os.path.dirname(_fs[i])filename = os.path.basename(_fs[i])(shotname,extension) = os.path.splitext(filename);filepath_new=TargetDir+'\\'+filepath.split(':')[-1]mkdir(filepath_new)**fr=open(_fs[i],'r')fw=open(filepath_new+'\\'+filename+"_tt",'w')**s="YES"print(_fs[i])while s!="":s=fr.readline()#s.decode("utf8","ignore")fw.writelines(s)fr.close()fw.close()

不指定文件编码格式

fr=open(_fs[i],'r')fw=open(filepath_new+'\\'+filename+"_tt",'w')

运行错误:UTF-8汉字读错误

仅指定读文件格式为UTF-8

fr=open(_fs[i],'r',encoding='utf-8')fw=open(filepath_new+'\\'+filename+"_tt",'w')

运行错误:UTF-8乱码写错误

3.指定读写文件格式都为UTF-8

fr=open(_fs[i],'r',encoding='utf-8')fw=open(filepath_new+'\\'+filename+"_tt",'w',encoding='utf-8')

运行错误: ANSI格式汉字读错误

测试结果:

对于纯英文文本文件,无论文件本身是什么格式,py也不需指定读写格式,都能正确处理当文件本身是UTF-8格式,且py指定读写格式都为UTF-8时,无论文件内容是英文,汉字,还是乱码都能正确读写无论文件是什么格式,当py指定读格式为UTF-8时,无论文件内容是英文,汉字,都能正确读出。

总结:

用Python读文本文件或写一个新的文本文件时,应该指定为UTF-8格式。用Python读非UTF-8格式的文本文件前,应该先转换成UTF-8格式。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。