python 读写文本文件
本人最近新学python ,用到文本文件的读取,经过一番研究,从网上查找资料,经过测试,总结了一下读取文本文件的方法.
1、在读取文本文件的时无非有两种方法:
a、f=open('filename', 'r')
content=f.read().decode('utf-8')
b、f=codecs.open(XXX, encoding='utf-8')
content=f.read()
2、读取Utf8格式的文本文件
# -*- coding: UTF8 -*-
import os
import sys
import os.path
import codecs
'''读取文本Utf8格式的文本文件,不需要设置特殊的编码方式,安装默认就行'''
def ReadUtf8TxtFile1(strFileName):
'''之所以加这样一句,是因为如果文件名包含中文路径,导致乱码'''
fileName = unicode(strFileName, "utf8")
if os.path.isfile(fileName):
filehandler = open(fileName,'r')
outStr = filehandler.read()
filehandler.close()
return outStr
3、读取Ansi格式的文本文件
'''读取Ansi格式的文本文件,不需要设置特殊的编码方式,安装默认就行'''
def ReadAnsiTxtFile(strFileName):
'''之所以加这样一句,是因为如果文件名包含中文路径,导致乱码'''
fileName = unicode(strFileName, "utf8")
if os.path.isfile(fileName):
filehandler = codecs.open(fileName,'r','gbk')
outStr = filehandler.read()
filehandler.close()
return outStr
4、读取文本unicode格式的文本文件
'''读取文本unicode格式的文本文件,不需要设置特殊的编码方式,安装默认就行'''
def ReadUnicodeTxtFile(strFileName):
'''之所以加这样一句,是因为如果文件名包含中文路径,导致乱码'''
fileName = unicode(strFileName, "utf8")
if os.path.isfile(fileName):
filehandler = codecs.open(fileName,'r','utf-16')
outStr = filehandler.read()
filehandler.close()
return outStr
5、读取utf-8编码文件(有BOM)格式的文本文件
'''读取utf-8编码文件(有BOM)格式的文本文件,不需要设置特殊的编码方式,安装默认就行'''
def ReadUtf8BOMTxtFile(strFileName):
'''之所以加这样一句,是因为如果文件名包含中文路径,导致乱码'''
fileName = unicode(strFileName, "utf8")
if os.path.isfile(fileName):
filehandler = codecs.open(fileName,'r')
outStr = filehandler.read()
filehandler.close()
if outStr[:3] == codecs.BOM_UTF8
outStr = outStr[3:].decode("utf8")
return outStr
6、综合以上几种方法可以可以看到,首先要获取文件的编码方式,然后再打开文件,这样可以整合为一个方法:
# -*- coding: UTF8 -*-
import os
import sys
import os.path
import codecs
import chardet
'''读取文本文件,注意文件的编码方式ANSI,Unicode,Unicode big endian,UTF-8,
首先要读取文件的编码方式,然后在用指定的编码方式来读取文件
'''
def ReadTxtFile(strFileName):
'''之所以加这样一句,是因为如果文件名包含中文路径,导致乱码'''
fileName = unicode(strFileName, "utf8")
filehandler = open(fileName,'r')
outStr = filehandler.read()
filehandler.close()
#读取编码方式
charset = chardet.detect(outStr)
filehandler = codecs.open(fileName,'r',charset['encoding'])
outStr = filehandler.read()
filehandler.close()
return outStr
'''读取文本文件,注意文件的编码方式ANSI,Unicode,Unicode big endian,UTF-8,
首先要读取文件的编码方式,然后在用指定的编码方式来读取文件
'''
def ReadTxtFile(strFileName):
fileName = unicode(strFileName, "utf8")
with open(fileName, 'r') as filehandler:
outStr = filehandler.read()
#读取编码方式
charset = chardet.detect(outStr)
with codecs.open(fileName,'r',charset['encoding']) as filehandler:
outStr = filehandler.read()
return outStr
Python引入了with语句来自动帮我们调用close()方法,和try ... finally是一样的,但是代码更佳简洁,并且不必调用close()方法。
7、写文本文件
'''写文本文件,如果文件不存在,则建立文件,如果存在,则以追加方式写入strConent'''
def WriteFile(strFileName,strContent):
'''之所以加这样一句,是因为如果文件名包含中文路径,导致乱码'''
fileName = unicode(strFileName, "utf8")
writeStyle = 'w'
if os.path.isfile(strFileName):
writeStyle = 'a'
filehandler = open(fileName,'a')
filehandler.write(strContent)
filehandler.close()
打开文件调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。
如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:
python 读写文本文件的更多相关文章
- 通过读写文本文件小结“关于python处理中文编码的问题”
一.引言 无论学习什么程序语言,字符串这种数据类型总是着有非常重要.然而最近在学习python这门语言,想要显示中文,总是出现各种乱码.于是在网上查了很多资料,各说纷纭,我也尝试了许多的方法,有时候可 ...
- Python中文本文件读写操作的编码问题
Python中文本文件读写的编码问题 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须先经按照一定的规则编成计算机认识的二进制后,才能存在电脑硬盘上 ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- python 读写、创建 文件
python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...
- [转]用Python读写Excel文件
[转]用Python读写Excel文件 转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交 ...
- python 读写、创建 文件的方法(必看)
python 读写.创建 文件的方法(必看) 更新时间:2016年09月12日 10:26:41 投稿:jingxian 我要评论下面小编就为大家带来一篇python 读写.创建 文件的方法(必看). ...
- Python读写操作Excel模块_xlrd_xlwt_xlutils
Python 读写操作Excel -- 安装第三方库(xlrd.xlwt.xlutils.openpyxl) 如果仅仅是要以表单形式保存数据,可以借助 CSV 格式(一种以逗号分隔的表格数据格式)进行 ...
- Python 读写文件 小应用:生成随机的测验试卷文件
去年学习了python的读写文件部分,了解了python读写的常用模块os.shelve,今天准备把课后作业试着自己做一下 目标:1)生成35份试卷.每个试卷有50道选择题 2)为了防止有学生作弊,需 ...
- python读写、创建文件、文件夹等等
python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...
随机推荐
- angualrjs学习总结二(作用域、控制器、过滤器)
一:Scope简介 Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带.Scope 是一个对象,有可用的方法和属性.Scope 可应用在视图和控制器上. ...
- webbroswer 后台注入脚本 的方法
HtmlElement script = webBrowser.Document.CreateElement("script"); script.SetAttribute(&quo ...
- activity和fragment的声明周期
Activity生命周期: Fragment生命周期:
- JAXB - Annotations, Controlling Element Selection: XmlAccessorType, XmlTransient
If JAXB binds a class to XML, then, by default, all public members will be bound, i.e., public gette ...
- 工作流引擎Activiti使用总结
http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html 1.简单介工作流引擎与Activiti 对于工作流引擎的 ...
- 多个html编辑器在同一页面加载
http://127.0.0.1:3750/test.aspx 下载:ckfinder,ckeditor编辑器 <script type="text/javascript" ...
- 转载--- SQL Server XML基础学习之<4>--XPath
T-SQL 支持用于查询 XML 数据类型的 XQuery 语言. XQuery 基于现有的 XPath 查询语言,并支持更好的迭代.更好的排序结果以及构造必需的 XML 的功能. 所以我们本章先 ...
- clock_gettime的使用,计时比clock()精确
函数"clock_gettime"是基于Linux C语言的时间函数,可以用于计算时间,有秒和纳秒两种精度. 函数原型: int clock_gettime(clockid_t c ...
- MVC (M-V-C启动程序调用关系)
在网上有很多mvc程序启动,调用之间的关系与顺序.而且还有很多很不错的网站.推荐一个 http://www.cnblogs.com/QLeelulu/archive/2008/09/30/1 ...
- Java对象的序列化与反序列化:默认格式及JSON格式(使用jackson)
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3558663.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...