最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3.5文件讀與寫(xiě)操作經(jīng)典實(shí)例詳解

 更新時(shí)間:2019年05月01日 09:42:05   作者:loveliuzz  
這篇文章主要介紹了Python3.5文件讀與寫(xiě)操作,結(jié)合實(shí)例形式詳細(xì)分析了Python針對(duì)文件的讀寫(xiě)操作常用技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python3.5文件讀與寫(xiě)操作。分享給大家供大家參考,具體如下:

1、文件操作的基本流程:

(1)打開(kāi)文件,得到文件句柄并賦值給一個(gè)變量

(2)通過(guò)句柄對(duì)文件進(jìn)行操作

(3)關(guān)閉文件

2、基本操作舉例:

現(xiàn)有一個(gè)命名為song.txt的文件,里面存放最喜愛(ài)的英文歌,內(nèi)容如下:

take me to your heart
hiding from the rain and snow
藏身于雨雪之中
trying to forget but i won't let go
努力忘記,但我怎能就這樣離去
looking at a crowded street
看著熙熙攘攘的街道
listening to my own heart beat
卻只能聽(tīng)見(jiàn)自己的心跳
so many people all around the world
這么多的人在世界上
tell me where do i find someone like you girl
請(qǐng)告訴我在哪里可以找到像你一樣的女孩
take me to your heart take me to your soul
將我留存心間與你的靈魂相伴
give me your hand before i'm old
給我你的手,在我老去之前
show me what love is haven't got a clue
問(wèn)情為何物在我們彼此離開(kāi)前
show me that wonders can be true
問(wèn)奇跡上演
they say nothing lasts forever
他們說(shuō)沒(méi)有什么可以天長(zhǎng)地久
we're only here today
我們也能此時(shí)相守
love is now or never
現(xiàn)在或者永不回頭
bring me far away
請(qǐng)帶我一起遠(yuǎn)走
take me to your heart take me to your soul
讓我靠近你的心與你的靈魂相伴
give me your hand and hold me
給我你的手擁我入懷
show me what love is be my guiding star
問(wèn)情為何物讓星辰照亮我路
it's easy take me to your heart
其實(shí)愛(ài)我真的很簡(jiǎn)單以

在另一個(gè)命名為file_operation.py的文件中編寫(xiě)代碼,使得以“utf-8”的編碼格式將文件song.txt打開(kāi),并且讀取該文件,將讀取的內(nèi)容返回到一個(gè)變量lyric中并打印出來(lái)。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

lyric = open("song",encoding="utf-8").read()
print(lyric)

運(yùn)行結(jié)果將song.txt文件的內(nèi)容打印出來(lái):截圖部分如下

3、文件基本操作

文件句柄:打開(kāi)文件的返回值為文件句柄(文件的內(nèi)存對(duì)象),對(duì)文件進(jìn)行操作的是操作文件句柄。

(1)讀文件內(nèi)容

f = open("song",encoding="utf-8") #打開(kāi)文件的返回值為文件句柄(文件的內(nèi)存對(duì)象)
lyric = f.read() #讀文件
print(lyric)  #打印讀取內(nèi)容

(2)寫(xiě)文件內(nèi)容

f = open("song2",'w',encoding="utf-8") #w:只寫(xiě)模式。不存在的文件則創(chuàng)建;存在則覆蓋原來(lái)文件的內(nèi)容
f.write("Take me to your heart\n")
f.write("帶我走進(jìn)你的心")
f.close()

運(yùn)行結(jié)果:

(3)在文件后邊追加內(nèi)容

f = open("song2",'a',encoding="utf-8") #a:追加模式。不存在的文件則創(chuàng)建;存在只追加內(nèi)容
f.write("\nTake me to your soul\n")
f.write("帶我走進(jìn)你的心靈")
f.close()

運(yùn)行結(jié)果:

(4)文件打開(kāi)模式總結(jié)

.r,只讀模式(默認(rèn))。
.w,只寫(xiě)模式?!静豢勺x;不存在的文件則創(chuàng)建;存在則覆蓋原來(lái)文件的內(nèi)容】
.a,追加模式?!静豢勺x;   不存在則創(chuàng)建;存在則只追加內(nèi)容】

4、文件讀操作

(1)文件讀操作——讀文件的第一行——調(diào)用:句柄.readline()

f = open("song",'r',encoding="utf-8")
first_line = f.readline() #讀取第一行
print(first_line)

運(yùn)行結(jié)果:

take me to your heart

(2)文件讀操作——利用循環(huán)讀取文件的前5行:

f = open("song",'r',encoding="utf-8")
for i in range(5):
 print(f.readline().strip())

運(yùn)行結(jié)果:

take me to your heart
hiding from the rain and snow
藏身于雨雪之中
trying to forget but i won't let go
努力忘記,但我怎能就這樣離去

句柄.readlines()將文件的內(nèi)容以每行作為一個(gè)元素轉(zhuǎn)換成一個(gè)列表

f = open("song",'r',encoding="utf-8")
print(f.readlines())

運(yùn)行結(jié)果:


(3)文件讀操作——利用句柄.readlines()循環(huán)讀取文件的內(nèi)容:

f = open("song",'r',encoding="utf-8")
for line in f.readlines():
 print(line.strip())

運(yùn)行結(jié)果:

(4)文件讀操作——利用句柄.readlines()循環(huán)讀取文件的內(nèi)容并處理特殊的行:

f = open("song",'r',encoding="utf-8")
for index,line in enumerate(f.readlines()):
 if index == 5:
  print("------------")
  continue
 print(line.strip())

運(yùn)行結(jié)果:

(5)高效讀取文件:當(dāng)文件的內(nèi)容很大時(shí),采用readlines的方式需要先把文件轉(zhuǎn)換成列表,耗費(fèi)時(shí)間太長(zhǎng),內(nèi)存里裝不下太大的文件。
采用遍歷并打印句柄的方式可以高效的實(shí)現(xiàn)文件的讀取,這種方式采用一行行讀取文件方式,內(nèi)存里面每次只保存一行。

f = open("song",'r',encoding="utf-8")
for line in f:
 print(line.strip())

運(yùn)行結(jié)果:

(6)高效讀取文件——處理特殊行

count = 0
f = open("song",'r',encoding="utf-8")
for line in f:
 if count == 3:
  print("-------------")
  count+=1
  continue
 print(line.strip())
 count += 1

5、文件讀完之后,文件句柄的指針移動(dòng)到文件的末尾,想從頭再讀一遍,需要將指針移回到開(kāi)始位置。

(1)查看文件句柄的指針指向的位置,調(diào)用.tell(),已讀取的字符的個(gè)數(shù)即為計(jì)數(shù)的值(也是文件句柄指針指向的位置)。

f = open("song",'r',encoding="utf-8")
print(f.tell())
print(f.readline().strip()) #讀取第一行
print(f.tell())

運(yùn)行結(jié)果:

 0
take me to your heart
23

f = open("song",'r',encoding="utf-8")
print(f.tell())
print(f.read(6)) #讀取字符的個(gè)數(shù)
print(f.tell())

運(yùn)行結(jié)果:

0
take m
6

(2)移動(dòng)文件句柄指針,使其回到某個(gè)位置,調(diào)用.seek(指針的位置)

f = open("song",'r',encoding="utf-8")
print(f.tell())
print(f.readline().strip()) #讀取第一行內(nèi)容
print(f.tell())    #打印文件句柄指針的位置
f.seek(0)      #文件句柄指針回到起始位置
print(f.tell())
f.seek(30)     #文件句柄指針回到第30個(gè)字符的位置
print(f.readline().strip()) #從第30個(gè)字符開(kāi)始讀一行內(nèi)容
print(f.tell())    #打印讀取之后指針的位置

運(yùn)行結(jié)果:

0
take me to your heart
23
0
from the rain and snow
54

6、打印文件的編碼類(lèi)型——調(diào)用:句柄.encoding()

f = open("song",'r',encoding="utf-8")
print(f.encoding)    #打印文件的編碼類(lèi)型

運(yùn)行結(jié)果:

utf-8

7、打印文件的名字——調(diào)用:句柄.name

f = open("song",'r',encoding="utf-8")
print(f.name)    #打印文件名字

運(yùn)行結(jié)果:

song

8、判斷文件是否可讀——調(diào)用:句柄.readable()

    判斷文件是否可寫(xiě)——調(diào)用:句柄.writable()

   判斷文件是否已經(jīng)關(guān)閉——調(diào)用:句柄.closed()

    判斷文件句柄指針是否可移動(dòng)——調(diào)用:句柄.seekable(),tty文件和終端設(shè)備文件的句柄指針不能移動(dòng)

f = open("song",'r',encoding="utf-8")
print(f.readable()) #判斷文件是否可讀
print(f.seekable()) #判斷文件句柄指針是否可移動(dòng)
print(f.writable()) #判斷文件是否可寫(xiě)

運(yùn)行結(jié)果:

True
True
False

9、以寫(xiě)的模式打開(kāi)一個(gè)文件,剛寫(xiě)完一行,突然斷電,寫(xiě)的內(nèi)容就沒(méi)有寫(xiě)入硬盤(pán)當(dāng)中,而是在內(nèi)存的緩存中(硬盤(pán)的速度比內(nèi)存慢)。
原本等到寫(xiě)入的內(nèi)容在內(nèi)存的緩存中滿了,再一起寫(xiě)入硬盤(pán)中,調(diào)用句柄.flush()表示強(qiáng)制刷新到硬盤(pán)里面。

舉例:動(dòng)態(tài)打印字符:每隔0.1秒在屏幕輸出打印一個(gè)#,一個(gè)打印20個(gè)

import sys,time

for i in range(20):
 sys.stdout.write("#") #向屏幕標(biāo)準(zhǔn)輸出寫(xiě)入的字符
 sys.stdout.flush()  #強(qiáng)制刷新
 time.sleep(0.1)   #休眠時(shí)間

運(yùn)行結(jié)果

####################

10、截?cái)辔募锩娴膬?nèi)容——調(diào)用:句柄.truncate()   沒(méi)有寫(xiě)參數(shù),不做任何操作

調(diào)用:句柄.truncate(10)    參數(shù)10,代表從文件開(kāi)頭,截?cái)?0個(gè)字符

f = open("song",'a',encoding="utf-8")
f.truncate(20)    #從起始位置截?cái)?0個(gè)字符

11、"+" 表示可以同時(shí)讀寫(xiě)某個(gè)文件

(1)r+   讀寫(xiě)模式,注:寫(xiě)的內(nèi)容從文件的最后面開(kāi)始寫(xiě)入(寫(xiě)等同于追加),即:【可讀;可寫(xiě);可追加】

f = open("song",'r+',encoding="utf-8") #r+表示讀寫(xiě)模式
for line in range(3):
 print(f.readline().strip())
f.write("-----------")

運(yùn)行結(jié)果:



(2)w+   寫(xiě)讀模式(應(yīng)用不多):先創(chuàng)建一個(gè)文件然后再向里面寫(xiě)內(nèi)容,注:寫(xiě)的內(nèi)容從文件的最后面開(kāi)始寫(xiě)入(寫(xiě)等同于追加)

f = open("song",'w+',encoding="utf-8")
f.write("-----------\n")
f.write("-----------\n")
f.write("-----------\n")

print(f.readline())
f.seek(14)
f.write("==========")
print(f.readline())
f.close()

運(yùn)行結(jié)果:

(3).a+   追加讀模式

12、"b"表示處理二進(jìn)制文件(如:FTP發(fā)送上傳ISO鏡像文件,linux可忽略,windows處理二進(jìn)制文件時(shí)需標(biāo)注)

應(yīng)用:在網(wǎng)絡(luò)傳輸只能用二進(jìn)制模式進(jìn)行傳輸;所有的二進(jìn)制文件(如:視頻)用二進(jìn)制模式。

(1)二進(jìn)制文件——讀

f = open("song",'rb') #"b"表示處理二進(jìn)制文件
for line in range(3):
 print(f.readline())

運(yùn)行結(jié)果:

(2)二進(jìn)制文件——寫(xiě)

f = open("song",'wb') #"b"表示處理二進(jìn)制文件--寫(xiě)
f.write("Hello World\n".encode()) #需要將字符串編碼成字節(jié)包(二進(jìn)制格式)才能夠?qū)懭?
f.close()

運(yùn)行結(jié)果:


13、"U"表示在讀取時(shí),可以將 \r \n \r\n自動(dòng)轉(zhuǎn)換成 \n (與 r 或 r+ 模式同使用)

(1)rU
(2)r+U

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python文件與目錄操作技巧匯總》、《Python文本文件操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 初識(shí)python的numpy模塊

    初識(shí)python的numpy模塊

    這篇文章主要介紹了初識(shí)python的numpy模塊,Numpy基于更加現(xiàn)代化的編程語(yǔ)言--python,python憑借著開(kāi)源、免費(fèi)、靈活性、簡(jiǎn)單易學(xué)、工程特性好等特點(diǎn)風(fēng)靡技術(shù)圈,已經(jīng)成為機(jī)器學(xué)習(xí)、數(shù)據(jù)分析等領(lǐng)域的主流編程語(yǔ)言,需要的朋友可以參考下
    2022-05-05
  • Python3使用SMTP發(fā)送帶附件郵件

    Python3使用SMTP發(fā)送帶附件郵件

    這篇文章主要為大家詳細(xì)介紹了Python3使用SMTP發(fā)送帶附件郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Jupyter Notebook讀取csv文件出現(xiàn)的問(wèn)題及解決

    Jupyter Notebook讀取csv文件出現(xiàn)的問(wèn)題及解決

    這篇文章主要介紹了Jupyter Notebook讀取csv文件出現(xiàn)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 如何利用python給微信公眾號(hào)發(fā)消息實(shí)例代碼

    如何利用python給微信公眾號(hào)發(fā)消息實(shí)例代碼

    使用過(guò)微信公眾號(hào)的小伙伴應(yīng)該知道微信公眾號(hào)有時(shí)候會(huì)給你推一些文章,當(dāng)你選擇它的某個(gè)功能時(shí),它還會(huì)返回一些信息,下面這篇文章主要給大家介紹了關(guān)于如何利用python給微信公眾號(hào)發(fā)消息的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • pyqt5利用pyqtDesigner實(shí)現(xiàn)登錄界面

    pyqt5利用pyqtDesigner實(shí)現(xiàn)登錄界面

    這篇文章主要為大家詳細(xì)介紹了pyqt5利用pyqtDesigner實(shí)現(xiàn)登錄界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python控制windows系統(tǒng)音量實(shí)現(xiàn)實(shí)例

    Python控制windows系統(tǒng)音量實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了Python控制windows系統(tǒng)音量實(shí)現(xiàn)實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • 關(guān)于探究python中sys.argv時(shí)遇到的問(wèn)題詳解

    關(guān)于探究python中sys.argv時(shí)遇到的問(wèn)題詳解

    這篇文章主要給大家介紹了python里sys.argv時(shí)遇到問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python中你所不知道的星號(hào)?*?用法

    Python中你所不知道的星號(hào)?*?用法

    這篇文章主要介紹了Python中你所不知道的星號(hào)?*?用法的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Python批處理刪除和重命名文件夾的實(shí)例

    Python批處理刪除和重命名文件夾的實(shí)例

    今天小編就為大家分享一篇Python批處理刪除和重命名文件夾的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python正則表達(dá)式常用函數(shù)總結(jié)

    Python正則表達(dá)式常用函數(shù)總結(jié)

    這篇文章主要介紹了Python正則表達(dá)式常用函數(shù),結(jié)合實(shí)例形式總結(jié)分析了Python正則表達(dá)式常用函數(shù)功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-06-06

最新評(píng)論

惠安县| 池州市| 友谊县| 正定县| 太谷县| 文水县| 正宁县| 定边县| 泗水县| 芦溪县| 柏乡县| 平乐县| 陵川县| 正宁县| 余干县| 登封市| 墨江| 钟山县| 平原县| 邻水| 沂南县| 合阳县| 睢宁县| 兴宁市| 彭阳县| 肇源县| 虞城县| 靖远县| 竹溪县| 澄城县| 安新县| 山东省| 韶关市| 措勤县| 靖西县| 甘德县| 隆林| 任丘市| 吴江市| 舞阳县| 汉源县|