一文看懂Python(五)-----文件篇
一、前言
文件操作在所有編程語言中都扮演著一個非常重要的角色,編程語言中的文件操作都大同小異,無非就是讀取和寫入,本文會詳細介紹Python的相關文件操作,包括常用的方法、方法如何使用、一些小的案例以及with語句的使用供大家學習!
二、方法及案例
2.1 文件操作的答題步驟
首先我們來總結一下文件操作的大體步驟:
- 1.打開文件
- 2.對文件進行操作,或者是讀取,或者是寫入
- 3.關閉文件
三個步驟缺一不可。
2.2 常用方法介紹
open() 方法用于打開一個文件,并返回文件對象,在對文件進行處理過程都需要使用到這個函數,如果該文件無法被打開,會拋出 OSError。
- Note:使用 open() 方法一定要保證關閉文件對象,即調用 close() 方法。
open()方法常用形式是接收文件名(file)和模型(mode)兩個參數,如下所示:
常見的打開模式有:
| ‘r’ | 以只讀方式打開文件(默認) |
| ‘w’ | 以寫入的方式打開文件,會覆蓋已存在的文件 |
| ‘x’ | 如果文件已經存在,使用此模式打開將引發異常 |
| ‘a’ | 以寫入模式打開,如果文件存在,則在末尾追加寫入 |
| ‘b’ | 以二進制模式打開文件 |
| ‘t’ | 以文本模式打開(默認) |
| ‘+’ | 可讀寫模式(可添加到其他模式中使用 |
| ‘U’ | 通用換行符支持 |
- 默認為文本模式,如果要以二進制模式打開,加上 b 。
常使用的方法有:
| f.close() | 關閉文件 |
| f.read([size = -1]) | 從文件讀取size個字符,當未給定size或給定負值的時候,讀取剩余的所有字符,然后作為字符串返回 |
| tell() | 返回文件指針當前在文件中的位置 |
| seek(offset,from) | 在文件中移動文件指針,從from(0代表文件起始位置,1代表當前位置,2代表文件末尾)偏移offset個字節 |
| write(str) | 將字符串str寫入文件 |
| readline([size = -1]) | 從文件中讀取并返回一行(包括行結束符),如果有size有定義則返回size個字符 |
| writelines(seq) | 向文件寫入字符串序列seq,seq應該是一個返回字符串的可迭代對象 |
2.3 常用方法介紹
首先我們使用一段《三國演義》中的一段作為案例文件data.txt。
“ 滾滾長江東逝水,浪花淘盡英雄。是非成敗轉頭空。青山依舊在,幾度夕陽紅。
白發漁樵江渚上,慣看秋月春風。一壺濁酒喜相逢。古今多少事,都付笑談中。
–調寄《臨江仙》
第一回 宴桃園豪杰三結義 斬黃巾英雄首立功
話說天下大勢,分久必合,合久必分。周末七國分爭,并入于秦。及秦滅之后,楚、漢分爭,又并入于漢。漢朝自高祖斬白蛇而起義,一統天下,后來光武中興,傳至獻帝,遂分為三國。推其致亂之由,殆始于桓、靈二帝。桓帝禁錮善類,崇信宦官。及桓帝崩,靈帝即位,大將軍竇武、太傅陳蕃共相輔佐。時有宦官曹節等弄權,竇武、陳蕃謀誅之,機事不密,反為所害,中涓自此愈橫。
建寧二年四月望日,帝御溫德殿。方升座,殿角狂風驟起。只見一條大青蛇,從梁上飛將下來,蟠于椅上。帝驚倒,左右急救入宮,百官俱奔避。須臾,蛇不見了。忽然大雷大雨,加以冰雹,落到半夜方止,壞卻房屋無數。建寧四年二月,洛陽地震;又海水泛溢,沿海居民,盡被大浪卷入海中。光和元年,雌雞化雄。六月朔,黑氣十余丈,飛入溫德殿中。秋七月,有虹現于玉堂;五原山岸,盡皆崩裂。種種不祥,非止一端。帝下詔問群臣以災異之由,議郎蔡邕上疏,以為蜺墮雞化,乃婦寺干政之所致,言頗切直。帝覽奏嘆息,因起更衣。曹節在后竊視,悉宣告左右;遂以他事陷邕于罪,放歸田里。后張讓、趙忠、封谞、段珪、曹節、侯覽、蹇碩、程曠、夏惲、郭勝十人朋比為奸,號為"十常侍"。帝尊信張讓,呼為"阿父"。朝政日非,以致天下人心思亂,盜賊蜂起。”
- 打開一個文件
- f.read([size = -1]) : 從文件讀取size個字符,當未給定size或給定負值的時候,讀取剩余的所有字符,然后作為字符串返回。
- readline([size = -1]) :從文件中讀取并返回一行(包括行結束符),如果有size有定義則返回size個字符 |
- tell() :返回文件指針當前在文件中的位置
- seek(offset,from) :在文件中移動文件指針,從from(0代表文件起始位置,1代表當前位置,2代表文件末尾)偏移offset個字節
-
Note:在文本文件中,沒有使用b模式選項打開的文件,只允許從文件頭開始計算相對位置,從文件尾計算時就會引發異常。
-
write(str) :將字符串str寫入文件
- writelines(seq) :向文件寫入字符串序列seq,seq應該是一個返回字符串的可迭代對象
2.3 案例:
將datatxt文件中的內容寫入到另一個文件data_copy.txt文件中。
fr = open('data.txt','rb') # 打開文件data.txt context = fr.read() # 讀取data.txt文件內容 fw = open('data_copy.txt','wb') # 打開文件data_copy.txt fw.write(context) # 寫入data_copy.txt文件 fw.close() fr.close()三、簡潔的with語句的使用
3.1 文件讀寫初級
f = open('data.txt','w')for each_line in f:print(each_line) f.close()3.2 文件讀寫中級
try:f = open('data.txt','w')for each_line in f:print(each_line) except OSError as reason:print('出錯了:'+str(reason)) finally:f.close()3.3 文件讀寫高級
try:with open('data.txt','w')for each_line in f:print(each_line) except OSError as reason:print('出錯了:'+str(reason))總結
以上是生活随笔為你收集整理的一文看懂Python(五)-----文件篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文看懂Python(四)-----os
- 下一篇: 分享一篇关于陌生人社交的竞品分析报告