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

利用python進(jìn)行文件操作

 更新時(shí)間:2020年12月04日 11:46:56   作者:愺様  
這篇文章主要介紹了如何利用python進(jìn)行文件操作,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

作者: wyh草樣

出處:https://www.cnblogs.com/wyh0923/p/14084898.html

什么是文件

文件是系統(tǒng)存儲(chǔ)區(qū)域的一個(gè)命名位置,用來(lái)存儲(chǔ)一些信息,便于后續(xù)訪問(wèn)。能夠在非易失性存儲(chǔ)器中實(shí)現(xiàn)持續(xù)性存儲(chǔ),比如在硬盤上。當(dāng)我們要讀取或者寫入文件時(shí),我們需要打開文件;在操作完畢時(shí),我們需要關(guān)閉文件,以便釋放和文件操作相關(guān)的系統(tǒng)資源,因此,文件操作的主要包括以下:

打開文件

  • 讀取或者寫入
  • 關(guān)閉文件
  • 打開文件

Python使用內(nèi)置的open()函數(shù)打開一個(gè)文件,并且返回一個(gè)文件對(duì)象,也叫句柄(handle)。

f = open("test.txt") # 在本文件夾下面的一個(gè)文件
f = open("C:/Python33/README.txt") # 全路徑

再打開文件時(shí),我們需要指定文件打開的模式,當(dāng)我們需要讀取文件時(shí),使用f = open("test.txt", 'r'),寫入文件時(shí),使用f = open("test.txt", 'w'),追加輸入時(shí)f = open("test.txt", 'a'),這里的a就是append的意思。追加模式和寫入模式的區(qū)別就是,寫入模式打開一個(gè)文件時(shí),無(wú)論這個(gè)文件是否有內(nèi)容,都會(huì)被清空再寫入;在使用追加模式時(shí),打開的文件,只是在原有的內(nèi)容上繼續(xù)進(jìn)行寫入。同時(shí)我們也要制定以文本模式打開還是二進(jìn)制模式打開。

文本模式(text mode)和二進(jìn)制(binary mode)模式的區(qū)別

文本模式中,讀取時(shí)操作系統(tǒng)的換行符('\n' on Unix,'\r\n' on Windows)會(huì)被轉(zhuǎn)換成Python的默認(rèn)換行符\n,寫入時(shí)會(huì)將默認(rèn)的換行符轉(zhuǎn)換為操作系統(tǒng)的換行符;在二進(jìn)制模式中不會(huì)轉(zhuǎn)換。這個(gè)轉(zhuǎn)化在對(duì)文本文件沒有影響,但是對(duì)于二進(jìn)制數(shù)據(jù)會(huì)有影響,比如圖像文件或者EXE文件等。因此, 再打開這類文件時(shí),一般使用二進(jìn)制模式進(jìn)行讀寫

常用模式

r 文本模式,讀取
rb 二進(jìn)制模式,讀取
w 文本模式,寫入
wb 二進(jìn)制模式,寫入
a 文本模式,追加
ab 二進(jìn)制模式,追加
+ 可讀可寫

f = open("test.txt", 'r') # 讀模式
f = open("test.txt", 'w') # 寫模式
f = open("img.bmp",'r+') # 可讀可寫
f = open("img.bmp",'w+') # 可讀可寫
f = open("img.bmp",'rb') # 二進(jìn)制讀取

如何關(guān)閉文件

當(dāng)文件操作結(jié)束時(shí),我們最好主動(dòng)關(guān)閉文件。盡管Python有垃圾回收(garbage collector)機(jī)制,去清理不用的對(duì)象,但是最好還是自己關(guān)閉文件。
最簡(jiǎn)單的方法就是:

f = open("app.log", 'r')
do_something()
f.close()

但是這個(gè)辦法不安全,因?yàn)樵谶M(jìn)行其他操作時(shí),可能會(huì)出現(xiàn)異常,程序退出,那么關(guān)閉文件的語(yǔ)句就不會(huì)被執(zhí)行。
因此,可以用語(yǔ)句來(lái)處理:

try:
 f = open('app.log', 'r')
 do_something()
finally:
 f.close()

無(wú)論是否發(fā)生異常,關(guān)閉文件的指令都會(huì)被執(zhí)行。
但是python官方給出的最佳用法是:

with open('app.log', 'r') as f:
 do_something()

使用這種用法,我們不必調(diào)用close()方法,在with語(yǔ)句程序內(nèi)部就會(huì)執(zhí)行,無(wú)論內(nèi)部是否出現(xiàn)異常。with語(yǔ)句被稱為上下文管理器,我們可以暫且不管這個(gè)的原理,只需要知道使用with語(yǔ)句,關(guān)閉文件的操作會(huì)被自動(dòng)執(zhí)行,這也是官方推薦的最佳用法,比用語(yǔ)句寫起來(lái)簡(jiǎn)單。

文件操作

寫入文件
主要介紹兩個(gè)方法:

1.write()方法
這個(gè)方法的參數(shù)是一個(gè)單獨(dú)的字符串,比如:

lines = ['line1', 'line2']
with open('filename.txt', 'w') as f:
 s = ''
 for data in lines:
  s += data
  s += '\n'
 f.write(s)

其實(shí)更好的寫法是使用join函數(shù):

lines = ['line1', 'line2']
with open('filename.txt', 'w') as f:
 f.write('\n'.join(lines))

其實(shí)更加優(yōu)雅的寫法,可以使用生成器:

lines = ['line1', 'line2']
with open('filename.txt', 'w') as f:
 f.writelines("%s\n" % l for l in lines)

讀取文件

這里介紹四種用法,后面都默認(rèn)文件已經(jīng)被打開了:
1.read()方法

result = f.read()

這里返回的是文件內(nèi)容,是str類型的結(jié)果,這個(gè)方法還帶一個(gè)數(shù)值類型的參數(shù),指定讀取多少內(nèi)容,如果省略了或者是負(fù)數(shù),那么就返回文件的全部?jī)?nèi)容。
2.readline()方法

result = f.readline()

返回的也是字符串,不過(guò)是一行內(nèi)容,繼續(xù)調(diào)用,就會(huì)返回下一行內(nèi)容
3.readlines()方法

result = f.readlines()

這里返回的是一個(gè)列表,但是當(dāng)數(shù)據(jù)較大時(shí),這樣的用法會(huì)很占用內(nèi)存,不推薦在數(shù)據(jù)量大時(shí)使用
4.直接循環(huán)文件對(duì)象

for line in f:
 print line
 do_something()

這樣的用法節(jié)省內(nèi)存,快速,并且代碼還簡(jiǎn)單

result = f.readlines()
------------------------
result = list(f)

這兩種寫法返回的結(jié)果是一樣的
顯然我們推薦第四種用法。

如何處理大文件
大文件主要問(wèn)題在于占用內(nèi)存較大,我們不能一下子將文件全部?jī)?nèi)容讀入內(nèi)存,最好的做法如下:

with open("log.txt") as f:
 for line in f:
  do_something_with(line)

一行一行讀取,內(nèi)存不會(huì)爆,同時(shí)速度也更快,使用with語(yǔ)句,無(wú)論內(nèi)部是否出現(xiàn)異常,在結(jié)束時(shí),文件對(duì)象都會(huì)被關(guān)閉,因此在處理大文件時(shí),最好這樣來(lái)做。

以上就是利用python進(jìn)行文件操作的詳細(xì)內(nèi)容,更多關(guān)于python 文件操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解python執(zhí)行shell腳本創(chuàng)建用戶及相關(guān)操作

    詳解python執(zhí)行shell腳本創(chuàng)建用戶及相關(guān)操作

    這篇文章主要介紹了python執(zhí)行shell腳本創(chuàng)建用戶及相關(guān)操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python環(huán)境的報(bào)錯(cuò)解決方法

    python環(huán)境的報(bào)錯(cuò)解決方法

    這篇文章主要為大家介紹了python環(huán)境的報(bào)錯(cuò)解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Pycharm安裝第三方庫(kù)失敗解決方案

    Pycharm安裝第三方庫(kù)失敗解決方案

    這篇文章主要介紹了Pycharm安裝第三方庫(kù)失敗解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Pydantic中model_validator的實(shí)現(xiàn)

    Pydantic中model_validator的實(shí)現(xiàn)

    本文主要介紹了Pydantic中model_validator的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • pdf論文中python畫的圖Type 3 fonts字體不兼容的解決方案

    pdf論文中python畫的圖Type 3 fonts字體不兼容的解決方案

    這篇文章主要介紹了pdf論文中python畫的圖Type 3 fonts字體不兼容的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • 如何在scrapy中捕獲并處理各種異常

    如何在scrapy中捕獲并處理各種異常

    這篇文章主要介紹了如何在scrapy中捕獲并處理各種異常,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Pycharm新建模板默認(rèn)添加個(gè)人信息的實(shí)例

    Pycharm新建模板默認(rèn)添加個(gè)人信息的實(shí)例

    今天小編就為大家分享一篇Pycharm新建模板默認(rèn)添加個(gè)人信息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Python Json讀寫操作之JsonPath用法詳解

    Python Json讀寫操作之JsonPath用法詳解

    JSONPath是一種信息抽取類庫(kù),是從JSON文檔中抽取指定信息的工具,提供多種語(yǔ)言實(shí)現(xiàn)版本,包括Javascript、Python、PHP和Java,這篇文章主要介紹了Python Json讀寫操作之JsonPath用法詳解,需要的朋友可以參考下
    2023-04-04
  • Python讀取mat(matlab數(shù)據(jù)文件)并實(shí)現(xiàn)畫圖

    Python讀取mat(matlab數(shù)據(jù)文件)并實(shí)現(xiàn)畫圖

    這篇文章主要介紹了Python讀取mat(matlab數(shù)據(jù)文件)并實(shí)現(xiàn)畫圖問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 跟老齊學(xué)Python之編寫類之一創(chuàng)建實(shí)例

    跟老齊學(xué)Python之編寫類之一創(chuàng)建實(shí)例

    上兩篇文章雖然已經(jīng)對(duì)類有了一點(diǎn)點(diǎn)模糊概念,但是,閱讀前面一講的內(nèi)容的確感到累呀,都是文字,連代碼都沒有。本講就要簡(jiǎn)單多了,嘗試走一個(gè)類的流程。
    2014-10-10

最新評(píng)論

永登县| 玉树县| 日土县| 三穗县| 东至县| 合肥市| 新泰市| 潮州市| 宜丰县| 巴林左旗| 颍上县| 厦门市| 宜丰县| 房产| 垫江县| 阜宁县| 错那县| 红桥区| 金溪县| 芦山县| 新沂市| 平武县| 历史| 南平市| 始兴县| 莱芜市| 青铜峡市| 三都| 余庆县| 边坝县| 深圳市| 陆河县| 岳阳市| 西安市| 宁强县| 文山县| 林周县| 小金县| 巴中市| 安福县| 喀喇沁旗|