Python2和Python3讀取文本文件的區(qū)別及說明
Python2和3讀取文本文件的區(qū)別
如何讀寫文本文件?
實(shí)際案例
- 某文本文件編碼格式已知(如UTF-8,GBK,BIG5)
- 在python 2.x和python 3.x中分別如何讀取該文件?
解決方案
- python 2.x:寫入文件前對(duì)unicode編碼,讀入文件后對(duì)二進(jìn)制字符串解碼。
- python 3.x:open函數(shù)指定't'的文本模式,encoding指定編碼格式。
代碼演示
# Python2中的文本文件讀寫 ''' 文本也就是unicode字符串,在寫入文件前要對(duì)unicode字符串指定某種格式的編碼, 將它變成str這種形式,python2中str為連續(xù)的字節(jié),只有這些字節(jié)才能存儲(chǔ)到物理設(shè)備上去。 讀取文件的時(shí)候就是反過來,讀入的也是一些字節(jié),將其進(jìn)行解碼還原成unicode也就是文本。 ''' # 寫入文本 f1 = open('py2.txt', 'w') s = u'你好' f1.write(s.encode('gbk')) f1.close() # 讀取文本 f1 = open('py2.txt', 'r') t = f1.read() print(t.decode('gbk')) -------------------------------------------------------------- # Python3中的文本文件讀寫 ''' python3中的字符串定義上更加明確了,原來的str變成了bytes(一系列字節(jié)); 原來的unicode變成了真正意義上的字符串。 python2中定義bytes字符串也就是字節(jié)字符串的時(shí)候,只需要這樣寫'sdfsger', 但是在python3中要加一個(gè)小b,如:b'sdfsger'。 unicode在python2中前面要加一個(gè)小u,這才表示unicode字符產(chǎn),如:u'你好'; 但是在python3中字符串的含義它直接就是unicode字符串,所以不用寫小u,如:'你好'。 這就是Python2和Python3之間字符串的差別 ''' # 寫入文本,t為文本模式不寫也是默認(rèn)為t打開,格式為utf8 f2 = open('py3.txt', 'wt', encoding='utf8') f2.write('你好,我愛編程。') f2.close() # 讀取文本 f2 = open('py3.txt', 'rt', encoding='utf8') s = f2.read() print(s) ''' Python3中指定encoding會(huì)自動(dòng)幫我們進(jìn)行編碼和解碼, 而python2中就需要你手動(dòng)進(jìn)行編碼和解碼。 '''
python讀取文件(三種方式)
首先,獲取文件對(duì)象
file = "F://content.txt" f = open(file, 'r', encoding='utf-8') list = f.readlines()
方法一:直接打印
# 方法1:直接打印 print(list)
方法二:while循環(huán)
print('----------方法2:while循環(huán)1----------------') # 方法2:while循環(huán) f = open(file, 'r', encoding='utf-8') while True: line = f.readline() if len(line)==0: break print(line.strip('\n')) print('----------方法2:while循環(huán)2----------------') while length>0: print(list[i][:-1]) i+=1 length-=1
方法三:for循環(huán)
# 方法3:for循環(huán) for i in list: print(i.strip())
所有代碼:
file = "F://content.txt" f = open(file, 'r', encoding='utf-8') list = f.readlines() print('-------------方法1:直接打印----------------') # 方法1:直接打印 print(list) length = len(list) i=0 print('----------方法2:while循環(huán)1----------------') # 方法2:while循環(huán) file = "F://content.txt" while True: line = f.readline() if len(line)==0: break print(line.strip('\n')) print('----------方法2:while循環(huán)2----------------') while length>0: print(list[i][:-1]) i+=1 length-=1 print('---------方法3:for循環(huán)-------------------') # 方法3:for循環(huán) for i in list: print(i.strip())
測(cè)試文本:
bbb aa dd
cc aa cc
aa dd ee
dfs dfs dfs
運(yùn)行結(jié)果:
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)將元組中的元素作為參數(shù)傳入函數(shù)的操作
這篇文章主要介紹了Python實(shí)現(xiàn)將元組中的元素作為參數(shù)傳入函數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06python獲取微信小程序手機(jī)號(hào)并綁定遇到的坑
這篇文章主要介紹了python獲取微信小程序手機(jī)號(hào)并綁定遇到的坑,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2018-11-11Matplotlib自定義坐標(biāo)軸刻度的實(shí)現(xiàn)示例
這篇文章主要介紹了Matplotlib自定義坐標(biāo)軸刻度的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06關(guān)于numpy.polyfit()與Stats.linregress()方法最小二乘近似擬合斜率對(duì)比
這篇文章主要介紹了關(guān)于numpy.polyfit()與Stats.linregress()方法最小二乘近似擬合斜率對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04使用python測(cè)試prometheus的實(shí)現(xiàn)
本文主要介紹了使用python測(cè)試prometheus的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02python 中split 和 strip的實(shí)例詳解
這篇文章主要介紹了 python 中split 和 strip的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07python強(qiáng)大的hook函數(shù)使用及應(yīng)用場(chǎng)景
鉤子函數(shù)(hook function)是把我們自己實(shí)現(xiàn)的hook函數(shù)在某一時(shí)刻掛接到目標(biāo)掛載點(diǎn)上,這篇文章主要介紹了python強(qiáng)大的hook函數(shù)使用及應(yīng)用場(chǎng)景,需要的朋友可以參考下2023-05-05Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
這篇文章主要介紹了Python __setattr__、 __getattr__、 __delattr__、__call__用法示例,本文分別對(duì)這幾個(gè)魔法方法做了講解,需要的朋友可以參考下2015-03-03Python 基于FIR實(shí)現(xiàn)Hilbert濾波器求信號(hào)包絡(luò)詳解
今天小編就為大家分享一篇Python 基于FIR實(shí)現(xiàn)Hilbert濾波器求信號(hào)包絡(luò)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02超詳細(xì),教你用python語言實(shí)現(xiàn)QQ機(jī)器人制作教程
這篇文章主要介紹了如何python語言實(shí)現(xiàn)QQ機(jī)器人,用圖文詳細(xì)的描述了其中的操作步驟,非常的簡單易上手,有需要的朋友可以參考下2021-08-08