Python 之 文件夾操作 讀寫(xiě)

在實(shí)際開(kāi)發(fā)中,常常需要對(duì)程序中的數(shù)據(jù)進(jìn)行操作品抽,而實(shí)現(xiàn)數(shù)據(jù)持久化最直接簡(jiǎn)單的方式就是將數(shù)據(jù)保存到文件中卑笨。說(shuō)到“文件”這個(gè)詞距潘,可能需要先科普一下關(guān)于[文件系統(tǒng)]的知識(shí)炼列,對(duì)于這個(gè)概念,維基百科上給出了很好的詮釋?zhuān)@里不再浪費(fèi)筆墨音比。

在Python中實(shí)現(xiàn)文件的讀寫(xiě)操作其實(shí)非常簡(jiǎn)單俭尖,通過(guò)Python內(nèi)置的open函數(shù),我們可以指定文件名洞翩、操作模式稽犁、編碼信息等來(lái)獲得操作文件的對(duì)象,接下來(lái)就可以對(duì)文件進(jìn)行讀寫(xiě)操作了菱农。這里所說(shuō)的操作模式是指要打開(kāi)什么樣的文件(字符文件還是二進(jìn)制文件)以及做什么樣的操作(讀缭付、寫(xiě)還是追加),具體的如下表所示循未。


    r                                          只讀模式
 
    w                                          寫(xiě)入模式
 
    a                                          追加模式  寫(xiě)入文件的最后位置
 
    r+                                         讀寫(xiě)模式,卸載愿文件內(nèi)容最后追加
 
    w+                                         寫(xiě)讀模式陷猫,只要是'寫(xiě)在前'都會(huì)建一個(gè)新文件
 
    a+                                         追加模式,在原文件最后追加
 
    rb                                         已二進(jìn)制文件格式讀取這個(gè)文件
 
    ab                                         已二進(jìn)制文件追加這個(gè)文件
 
    wb                                         已二進(jìn)制格式寫(xiě)這個(gè)文件
讀寫(xiě)文本文件

讀取文本文件時(shí)的妖,需要在使用open函數(shù)時(shí)指定好帶路徑的文件名(可以使用相對(duì)路徑或絕對(duì)路徑)并將文件模式設(shè)置為'r'(如果不指定绣檬,默認(rèn)值也是'r'),然后通過(guò)encoding參數(shù)指定編碼(如果不指定嫂粟,默認(rèn)值是None娇未,那么在讀取文件時(shí)使用的是操作系統(tǒng)默認(rèn)的編碼),如果不能保證保存文件時(shí)使用的編碼方式與encoding參數(shù)指定的編碼方式是一致的星虹,那么就可能因無(wú)法解碼字符而導(dǎo)致讀取失敗零抬。

一般打開(kāi)文件使用完以后記得關(guān)閉文件!但是使用With會(huì)自動(dòng)關(guān)閉

使用with 打開(kāi)文件判斷 會(huì)在結(jié)束的時(shí)候自動(dòng)關(guān)閉文件 如果出現(xiàn)文件報(bào)錯(cuò) 會(huì)自動(dòng)進(jìn)入報(bào)錯(cuò)列 不會(huì)使文件崩潰

try:
 
    with open(r'/Users/Test/Desktop/文件測(cè)試操作.txt', encoding='utf-8') as f:
 
        print(f.read())
 
except FileNotFoundError:
 
    print('沒(méi)有此文件或者文件名錯(cuò)誤')
 
except LookupError:
 
    print('指定了未知編碼')
 
except UnicodeDecodeError:
 
    print('讀取文件時(shí)解碼錯(cuò)誤')
 
finally:
 
    print('\n\n')
 
    print('測(cè)試宽涌!可以放入任意東西F揭埂!一般放入最后執(zhí)行')

輸出結(jié)果:如果此路徑下沒(méi)有這個(gè)文件夾卸亮,有這個(gè)文件忽妒,則打開(kāi),沒(méi)有則進(jìn)入報(bào)錯(cuò)列兼贸。

循環(huán)讀取文件內(nèi)容
import time
 
with open(Search) as f:
 
    for line in f:
 
        print(line)
 
        time.sleep(1)
 
print()

讀取文件到list中

with open(Search) as f:

   lines = f.readlines()

print(lines)

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

要將文本信息寫(xiě)入文件文件也非常簡(jiǎn)單段直,在使用open函數(shù)時(shí)指定好文件名并將文件模式設(shè)置為'w'即可。注意如果需要對(duì)文件內(nèi)容進(jìn)行追加式寫(xiě)入溶诞,應(yīng)該將模式設(shè)置為'a'鸯檬。如果要寫(xiě)入的文件不存在會(huì)自動(dòng)創(chuàng)建文件而不是引發(fā)異常。
注意 這個(gè)方法 是直接覆蓋文件 若果目標(biāo)路徑有文件 則會(huì)打開(kāi) 螺垢,沒(méi)有 則會(huì)自動(dòng)創(chuàng)建
try:
 
    with open('/Users/test/Desktop/文件測(cè)試操作.txt', 'w', encoding='utf-8') as reads:
 
        reads.write('234')
 
except IOError as ex:
 
    print('寫(xiě)入目標(biāo)文件錯(cuò)誤喧务,錯(cuò)誤原因:'.ex)
 
finally:
 
    print('測(cè)試')
 
print('操作完成!’)

如果你想寫(xiě)入到最后一行 使用a+

try:
 
    with open('/Users/test/文件測(cè)試操作.txt', 'a+', encoding='utf-8') as reads:
 
        reads.write('\n’’測(cè)試測(cè)試測(cè)試')
 
except IOError as ex:
 
    print('寫(xiě)入目標(biāo)文件錯(cuò)誤颜及,錯(cuò)誤原因:'.ex)
 
finally:
 
    print('測(cè)試')
 
print('操作完成!')
打開(kāi)二進(jìn)制文件,并復(fù)制它蹂楣。
以一張圖片為列。
try:
 
    with open(‘test.jpg') as fs1:
        data = fs1.read()
        print(type(data))  # <class 'bytes'>
    with open(’test1.jpg', 'wb') as fs2:
 
        fs2.write(data)
 
except FileNotFoundError as e:
 
    print('指定的文件無(wú)法打開(kāi).')
 
except IOError as e:
 
    print('讀寫(xiě)文件時(shí)出現(xiàn)錯(cuò)誤.')
 
print('程序執(zhí)行結(jié)束.')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末讯蒲,一起剝皮案震驚了整個(gè)濱河市痊土,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌墨林,老刑警劉巖赁酝,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異旭等,居然都是意外死亡酌呆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)搔耕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)隙袁,“玉大人,你說(shuō)我怎么就攤上這事弃榨∑惺眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵鲸睛,是天一觀的道長(zhǎng)娜饵。 經(jīng)常有香客問(wèn)我,道長(zhǎng)官辈,這世上最難降的妖魔是什么箱舞? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮拳亿,結(jié)果婚禮上晴股,老公的妹妹穿的比我還像新娘。我一直安慰自己风瘦,他們只是感情好队魏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著万搔,像睡著了一般胡桨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞬雹,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天昧谊,我揣著相機(jī)與錄音,去河邊找鬼酗捌。 笑死呢诬,一個(gè)胖子當(dāng)著我的面吹牛涌哲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尚镰,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼阀圾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了狗唉?” 一聲冷哼從身側(cè)響起初烘,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎分俯,沒(méi)想到半個(gè)月后肾筐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缸剪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年吗铐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杏节。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唬渗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奋渔,到底是詐尸還是另有隱情谣妻,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布卒稳,位于F島的核電站蹋半,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏充坑。R本人自食惡果不足惜减江,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捻爷。 院中可真熱鬧辈灼,春花似錦、人聲如沸也榄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)甜紫。三九已至降宅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囚霸,已是汗流浹背腰根。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拓型,地道東北人额嘿。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓瘸恼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親册养。 傳聞我的和親對(duì)象是個(gè)殘疾皇子东帅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容