本人最近新學python ,用到文字檔案的讀取,經過一番研究,從網上查詢資料,經過測試,總結了一下讀取文字檔案的方法.
a、f=open('filename', 'r')
content=f.read().decode('utf-8')
b、f=codecs.open(***, 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 讀寫文字檔案
def readfile filename,mode r 讀取檔案內容 filename 檔名 return string bin 若檔案不存在,則返回空字串 import os if not os.path.exists filename return fp open filename,mode,...
讀寫文字檔案
讀文字 function readtext filename string string vars string alltext string f textfile begin assignfile f,filename 將c myfile.txt檔案與f變數建立連線,後面可以使用f變數對檔案進行操...
Python 逐行讀寫文字檔案
filereadobj open input.txt filewriteobj open output.txt w filelinetext filereadobj.readline while filelinetext string filelinetext filewriteobj.write ...