日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

带你学python基础:文件读写,俗称IO操作

發(fā)布時(shí)間:2025/3/20 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 带你学python基础:文件读写,俗称IO操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這一節(jié)講個(gè)挺有意思的知識,至少在我以前剛剛接觸編程的時(shí)候,對于文件操作還是覺得很有意思的事情,這也許是有一種操作文件的激情吧,希望看到這篇文章的讀者也會有這樣的激情,說明還是很有興趣的,當(dāng)然,就算沒有,可能是你的興趣點(diǎn)不在這。

一、文件的打開

首先,我們還是從文件的打開與關(guān)閉講起。講這個(gè)之前,我們先了解一下文件操作的大致流程,這個(gè)流程不止 Python 是這樣的,幾乎所有的編程語言的操作都是這樣的,有了這樣的一個(gè)流程,再寫程序的時(shí)候,思路就豁然開朗了。

從這個(gè)圖我們可以看出,文件操作一般會經(jīng)歷打開文件、讀寫數(shù)據(jù)、關(guān)閉文件,這樣的大概的流程,所以,下面的知識,我們就按照這個(gè)流程一一講解涉及的知識點(diǎn)。

一提到文件打開,我們就會想到 open() 這個(gè)函數(shù),打鐵趁熱,我們就將一下這個(gè)函數(shù)的用法。

open()

函數(shù)語法

open(name[, mode[, buffering[,encoding]]])

參數(shù)解釋

  • name : 訪問的文件名稱的字符串值(區(qū)分絕對路徑和相對路徑)。
  • mode : mode 決定了打開文件的模式:只讀,寫入,追加等。
  • buffering : 如果 buffering 的值被設(shè)為 0,就不會有寄存。如果 buffering 的值取 1,訪問文件時(shí)會寄存行。如果將 buffering 的值設(shè)為大于 1 的整數(shù),表明了這就是的寄存區(qū)的緩沖大小。如果取負(fù)值,寄存區(qū)的緩沖大小則為系統(tǒng)默認(rèn)。

實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)

# -*- coding:utf-8 -*- # 新建打開文件操作,打開文件hello.txt,以讀取的模式打開 f = open('./hello.txt', 'r')

是不是易如反掌,這里只是打開了這個(gè)文件,還沒有進(jìn)行任何的操作,文件操作待我娓娓道來,這個(gè)實(shí)例中用到了文件讀取的模式,介紹一下常用的模式。

注意:對于初學(xué)者來說,需要注意的是,模式b的意思是代表二進(jìn)制讀寫,+直接代表讀寫,也就是有讀取和寫入兩個(gè)操作。也許你不理解什么是二進(jìn)制讀寫,這里講一下,數(shù)據(jù)的保存是有文本字符保存和二進(jìn)制保存的,所以,在讀寫的時(shí)候,自然也就有兩種讀寫方式了。具體的可以查查資料,學(xué)過 C 或者 C++ 就很清楚了。

高級的打開open

這里為什么說高級的打開呢?

在前面說到的文件操作流程中,是不是不可避免的都需要自己去執(zhí)行關(guān)閉文件操作呢?其實(shí)不是的,在 Python 中提供了一種更加方便的形式,不需要手動的去關(guān)閉文件。

語法

with…open

實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)

with open('./hello.txt', 'r') as f:print(f)

注意:這里的as和前面提到過的as是異曲同工的,都是起到別名的作用。

至于為什么需要這種寫法,就是可以避免每次需要手動關(guān)閉文件,這種方式會在需要的時(shí)候自動關(guān)閉。

二、文件的操作

文件操作流程第一步文件打開相信理解透徹了,接下來就是重頭戲文件的操作了。

文件讀取

read()方法

read的使用方法異常簡單

read(num)

read()可以讀取文件里面的內(nèi)容。num表示要從文件中讀取的數(shù)據(jù)的長度(單位是字節(jié)),如果沒有傳入num,那么就表示讀取文件中所有的數(shù)據(jù)。

實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)
這里接著上面打開的流程接著寫程序。

with open('./hello.txt', 'r') as f:# 如果不寫入?yún)?shù),代表讀取全部內(nèi)容str = f.read()print(str)print('*' * 10)# 讀取4字節(jié)str2 = f.read(4)print(str2)

哪還有其他的讀取方式嗎?

readline()/readlines()

  • readline:讀取第一行,返回一個(gè)字符串。
  • readlines:按照行的方式讀取整個(gè)文件,每一行作為列表的一個(gè)元素,最后返回一個(gè)列表。

實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)

# 使用readlines with open('./hello.txt', 'r') as f:content = f.readlines()print('類型:', type(content))for i in content:print(i)print('*' * 20)# 使用readline with open('./hello.txt', 'r') as f:content = f.readline()print('類型:', type(content))for i in content:print(i)

文件寫入

write()方法和writelines(seq)方法

這兩個(gè)方式都是用于文件寫入的。需要注意的是,他們寫完后在文件末尾都不會寫入換行符。

# 文件寫入 with open('./hello.txt', 'a') as f:f.write('12345617777')f.writelines('I love you ! ')print('*' * 20)# 使用readlines讀取 with open('./hello.txt', 'r') as f:content = f.readlines()for i in content:print(i)


可見不會自動加入換行符!

其他實(shí)用操作

在某些場景下,可能我們需要更加方便的處理文件,例如,當(dāng)我們讀取文件一半的時(shí)候,我們需要讀文件的后面具體的某些內(nèi)容,這時(shí)候,我們就需要移動文件的指針來讀取了。當(dāng)然,都不用擔(dān)心,python 都提供了這些方法,下面就講解這些方法。

這里需要介紹幾個(gè)方法。

  • tell()
    返回文件游標(biāo)操作的當(dāng)前位置,以文件的開頭為原點(diǎn)。

  • seek(offset[,whence])
    移動指針方法。
    offset :開始的偏移量,也就是代表需要移動偏移的字節(jié)數(shù)
    whence:可選,默認(rèn)值為 0。給offset參數(shù)一個(gè)定義,表示要從哪個(gè)位置開始偏移;0代表從文件開頭開始算起,1代表從當(dāng)前位置開始算起,2代表從文件末尾算起。

實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)

例如,我們不從文件開頭讀取,從10個(gè)文字后開始讀取

with open('./hello.txt', 'r') as f:f.seek(10, 0)print('當(dāng)前位置:', f.tell())content = f.read()print(content)

最后再講兩個(gè)函數(shù)。

  • flush()
    把緩沖區(qū)的內(nèi)容寫入硬盤。

  • truncate()
    把文件裁成規(guī)定的大小,默認(rèn)的是裁到當(dāng)前文件操作標(biāo)記的位置。如果size比文件的大小還要大,依據(jù)系統(tǒng)的不同可能是不改變文件,也可能是用0把文件補(bǔ)到相應(yīng)的大小,也可能是以一些隨機(jī)的內(nèi)容加上去。

三、文件關(guān)閉

文件關(guān)閉是指,在文件操作完成之后,需要關(guān)閉。其實(shí),看完前面的內(nèi)容,文件關(guān)閉似乎不太重要了。那么如何使用呢,非常簡單。

文件對象.close() # 新建打開文件操作,打開文件hello.txt,以讀取的模式打開 f = open('./hello.txt', 'r') f.close()

文件操作的內(nèi)容就這么多了!!!over!

總結(jié)

以上是生活随笔為你收集整理的带你学python基础:文件读写,俗称IO操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。