打開(kāi)文件
使用open()函數(shù)打開(kāi)文件,兩個(gè)參數(shù)文件路徑或文件名第二個(gè)是文件的打開(kāi)方式
"r"裹虫,以只讀模式打開(kāi)调塌,你只能讀取文件但不能編輯/刪除文件的任何內(nèi)容
"w"跃闹,以寫入模式打開(kāi),如果文件存在將會(huì)刪除里面的所有內(nèi)容磷雇,然后打開(kāi)這個(gè)文件進(jìn)行寫入
"a"偿警,以追加模式打開(kāi),寫入到文件中的任何數(shù)據(jù)將自動(dòng)添加到末尾
默認(rèn)的模式為只讀模式唯笙,也就是說(shuō)如果你不提供任何模式螟蒸,open() 函數(shù)將會(huì)以只讀模式打開(kāi)文件。我們將實(shí)驗(yàn)打開(kāi)一個(gè)文件崩掘,不過(guò)要準(zhǔn)備實(shí)驗(yàn)材料:
文件關(guān)閉
使用close()完成操作
始終確保你顯式關(guān)閉每個(gè)打開(kāi)的文件七嫌,一旦它的工作完成你沒(méi)有任何理由保持打開(kāi)文件。因?yàn)槌绦蚰艽蜷_(kāi)的文件數(shù)量是有上限的苞慢。如果你超出了這個(gè)限制诵原,沒(méi)有任何可靠的方法恢復(fù),因此程序可能會(huì)崩潰挽放。每個(gè)打開(kāi)的文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)(文件描述符/句柄/文件鎖...)都要消耗一些主存資源绍赛。因此如果許多打開(kāi)的文件沒(méi)用了你可以結(jié)束大量的內(nèi)存浪費(fèi),并且文件打開(kāi)時(shí)始終存在數(shù)據(jù)損壞或丟失的可能性骂维。
文件讀取
使用read()方法一次性讀取整個(gè)文件
如果你再一次調(diào)用 read(),它會(huì)返回空字符串因?yàn)樗呀?jīng)讀取完整個(gè)文件贺纲。
read(size) 有一個(gè)可選的參數(shù) size航闺,用于指定字符串長(zhǎng)度。如果沒(méi)有指定 size 或者指定為負(fù)數(shù)猴誊,就會(huì)讀取并返回整個(gè)文件潦刃。當(dāng)文件大小為當(dāng)前機(jī)器內(nèi)存兩倍時(shí),就會(huì)產(chǎn)生問(wèn)題懈叹。反之乖杠,會(huì)盡可能按比較大的 size 讀取和返回?cái)?shù)據(jù)。
readline()能幫助你每次讀取文件的一行澄成。
readlines()讀取所有行到一個(gè)列表中胧洒。
文件寫入
使用write()打開(kāi)一個(gè)問(wèn)及那然后我們隨便寫入一些文本
文件操作
在實(shí)際情況中,我們應(yīng)該嘗試使用 with 語(yǔ)句處理文件對(duì)象墨状,它會(huì)在文件用完后會(huì)自動(dòng)關(guān)閉卫漫,就算發(fā)生異常也沒(méi)關(guān)系。它是 try-finally 塊的簡(jiǎn)寫:
>>> with open('sample.txt') as fobj:
... for line in fobj:
... print(line, end = '')