中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python3.5文件讀與寫操作經典實例詳解

發布時間:2020-09-04 17:28:41 來源:腳本之家 閱讀:138 作者:loveliuzz 欄目:開發技術

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

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

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

(2)通過句柄對文件進行操作

(3)關閉文件

2、基本操作舉例:

現有一個命名為song.txt的文件,里面存放最喜愛的英文歌,內容如下:

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
卻只能聽見自己的心跳
so many people all around the world
這么多的人在世界上
tell me where do i find someone like you girl
請告訴我在哪里可以找到像你一樣的女孩
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
問情為何物在我們彼此離開前
show me that wonders can be true
問奇跡上演
they say nothing lasts forever
他們說沒有什么可以天長地久
we're only here today
我們也能此時相守
love is now or never
現在或者永不回頭
bring me far away
請帶我一起遠走
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
問情為何物讓星辰照亮我路
it's easy take me to your heart
其實愛我真的很簡單以

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

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

運行結果將song.txt文件的內容打印出來:截圖部分如下

Python3.5文件讀與寫操作經典實例詳解

3、文件基本操作

文件句柄:打開文件的返回值為文件句柄(文件的內存對象),對文件進行操作的是操作文件句柄。

(1)讀文件內容

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

(2)寫文件內容

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

運行結果:

Python3.5文件讀與寫操作經典實例詳解

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

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

運行結果:

Python3.5文件讀與寫操作經典實例詳解

(4)文件打開模式總結

.r,只讀模式(默認)。
.w,只寫模式。【不可讀;不存在的文件則創建;存在則覆蓋原來文件的內容】
.a,追加模式。【不可讀;   不存在則創建;存在則只追加內容】

4、文件讀操作

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

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

運行結果:

take me to your heart

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

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

運行結果:

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

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

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

運行結果:

Python3.5文件讀與寫操作經典實例詳解

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

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

運行結果:

Python3.5文件讀與寫操作經典實例詳解

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

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

運行結果:

Python3.5文件讀與寫操作經典實例詳解

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

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

運行結果:

Python3.5文件讀與寫操作經典實例詳解

(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

Python3.5文件讀與寫操作經典實例詳解

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

(1)查看文件句柄的指針指向的位置,調用.tell(),已讀取的字符的個數即為計數的值(也是文件句柄指針指向的位置)

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

運行結果:

 0
take me to your heart
23

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

運行結果:

0
take m
6

(2)移動文件句柄指針,使其回到某個位置,調用.seek(指針的位置)

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

運行結果:

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

6、打印文件的編碼類型——調用:句柄.encoding()

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

運行結果:

utf-8

7、打印文件的名字——調用:句柄.name

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

運行結果:

song

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

    判斷文件是否可寫——調用:句柄.writable()

   判斷文件是否已經關閉——調用:句柄.closed()

    判斷文件句柄指針是否可移動——調用:句柄.seekable(),tty文件和終端設備文件的句柄指針不能移動

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

運行結果:

True
True
False

9、以寫的模式打開一個文件,剛寫完一行,突然斷電,寫的內容就沒有寫入硬盤當中,而是在內存的緩存中(硬盤的速度比內存慢)。
原本等到寫入的內容在內存的緩存中滿了,再一起寫入硬盤中,調用句柄.flush()表示強制刷新到硬盤里面

舉例:動態打印字符:每隔0.1秒在屏幕輸出打印一個#,一個打印20個

import sys,time

for i in range(20):
 sys.stdout.write("#") #向屏幕標準輸出寫入的字符
 sys.stdout.flush()  #強制刷新
 time.sleep(0.1)   #休眠時間

運行結果

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

10、截斷文件里面的內容——調用:句柄.truncate()   沒有寫參數,不做任何操作

調用:句柄.truncate(10)    參數10,代表從文件開頭,截斷10個字符

f = open("song",'a',encoding="utf-8")
f.truncate(20)    #從起始位置截斷20個字符

Python3.5文件讀與寫操作經典實例詳解

11、"+" 表示可以同時讀寫某個文件

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

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

運行結果:

Python3.5文件讀與寫操作經典實例詳解Python3.5文件讀與寫操作經典實例詳解

(2)w+   寫讀模式(應用不多):先創建一個文件然后再向里面寫內容,注:寫的內容從文件的最后面開始寫入(寫等同于追加)

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()

運行結果:

Python3.5文件讀與寫操作經典實例詳解Python3.5文件讀與寫操作經典實例詳解

(3).a+   追加讀模式

12、"b"表示處理二進制文件(如:FTP發送上傳ISO鏡像文件,linux可忽略,windows處理二進制文件時需標注)

應用:在網絡傳輸只能用二進制模式進行傳輸;所有的二進制文件(如:視頻)用二進制模式。

(1)二進制文件——讀

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

運行結果:

Python3.5文件讀與寫操作經典實例詳解

(2)二進制文件——寫

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

運行結果:

Python3.5文件讀與寫操作經典實例詳解

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

(1)rU
(2)r+U

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python文本文件操作技巧匯總》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖宇县| 石狮市| 隆子县| 岳西县| 息烽县| 象州县| 扬州市| 娱乐| 宣恩县| 罗田县| 汶上县| 孝义市| 尼木县| 沂源县| 永善县| 祁门县| 南川市| 清河县| 龙口市| 谢通门县| 中宁县| 松溪县| 通许县| 纳雍县| 定西市| 文化| 吉林省| 上蔡县| 汝阳县| 抚远县| 北票市| 孟村| 兴业县| 郑州市| 东辽县| 建昌县| 盐池县| 雅江县| 峡江县| 文化| 湖南省|