Python學(xué)習(xí)筆記8—文件讀寫

文件與文件路徑

1)Windows上的倒斜杠和os x及Linux上的正斜杠

? ? ? 在Windows上驶沼,寫路徑時(shí)使用倒斜杠作為分隔符

? ? ?os x和Linux上滔悉,使用正斜杠作為分隔符

2)當(dāng)前工作目錄

? ? ?當(dāng)前工作目錄--------cwd(current working directory)

? ? ?os.gecwd()---------獲得當(dāng)前工作目錄的字符串

? ? os.chdir()---------改變當(dāng)前工作目錄

3)絕對(duì)路徑與相對(duì)路徑

? ? ? 絕對(duì)路徑:從根目錄開始

? ? ? 相對(duì)路徑:相對(duì)于程序的當(dāng)前目錄

? ? ? 點(diǎn)(.)文件夾:當(dāng)前目錄

? ? ? 點(diǎn)點(diǎn)(..)文件夾:父文件夾

? ? ? 如下圖:bacon文件夾為當(dāng)前工作目錄

思考:

? ? ? ? ? ? ?若當(dāng)前工作目錄為C:\bacon\spam.txt刁憋,

? ? ? ? ? ? 則C:\spam.txt的相對(duì)路徑就表示為..\..\spam.txt

4)使用os.makedirs()創(chuàng)建新文件夾

5)os.path模塊

? ? ?os.path模塊包含了許多與文件名和文件路徑相關(guān)的有用函數(shù)滥嘴。

6)處理絕對(duì)路徑和相對(duì)路徑

? ? ?os.path 模塊提供了一些函數(shù)电抚,返回一個(gè)相對(duì)路徑的絕對(duì)路徑蝇恶,以及檢查給定的路徑是否為絕對(duì)路徑把还。

? ? ?調(diào)用os.path.abspath(path)將返回參數(shù)的絕對(duì)路徑的字符串。這是將相對(duì)路徑轉(zhuǎn)換為絕對(duì)路徑的簡(jiǎn)便方法俏脊。

? ? ?調(diào)用os.path.isabs(path)全谤,如果參數(shù)是一個(gè)絕對(duì)路徑,就返回True爷贫,如果參數(shù)是一個(gè)相對(duì)路徑认然,就返回False。

? ? ?調(diào)用os.path.relpath(path, start)將返回從start 路徑到path 的相對(duì)路徑的字符串漫萄。如果沒有提供start卷员,就使用當(dāng)前工作目錄作為開始路徑。

? ? ?調(diào)用os.path.split(path)腾务,將返回一個(gè)路徑的目錄名稱和基本名稱

7)查看文件大小和文件夾內(nèi)容

? ? ?調(diào)用os.path.getsize(path)將返回path 參數(shù)中文件的字節(jié)數(shù)毕骡。

? ? ?調(diào)用os.listdir(path)將返回文件名字符串的列表,包含path 參數(shù)中的每個(gè)文件(請(qǐng)注意岩瘦,這個(gè)函數(shù)在os模塊中未巫,而不是os.path)。

8)檢查路徑有效性

如果path參數(shù)所指的文件或文件夾存在启昧,調(diào)用os.path.exists(path)將會(huì)返回True叙凡,否則返回FALSE

如果path參數(shù)參數(shù)存在,且是一個(gè)文件密末,調(diào)用os.path.isfile(path)將會(huì)返回True握爷,否則返回FALSE

如果path參數(shù)參數(shù)存在,且是一個(gè)文件夾严里,調(diào)用os.path.isdir(path)將會(huì)返回True新啼,否則返回FALSE

文件讀寫過程

主要涉及純文本文件

在Python 中,讀寫文件有3 個(gè)步驟:

1)調(diào)用open()函數(shù)刹碾,返回一個(gè)File 對(duì)象燥撞。

傳入open方法的文件路徑可以是絕對(duì)路徑,也可以是相對(duì)路徑

demofile = open('F:\\delicious\\demo.txt')

demofile = open('F:\\delicious\\demo.txt','r')

兩種形式等價(jià)教硫,為“讀模式”叨吮,以讀模式打開,不能對(duì)文件內(nèi)容做寫入和修改操作

demofile = open('F:\\delicious\\demo.txt','w')

這種模式以“寫模式”打開瞬矩,寫模式將覆蓋原有文件

demofile = open('F:\\delicious\\demo.txt','a')

這種模式以“添加模式”打開,添加模式在已有文件末尾添加文本

2)調(diào)用File 對(duì)象的read()或write()方法锋玲。

讀取文件內(nèi)容景用,調(diào)用file對(duì)象的read()

有兩種方法;read()按字符讀取,將整個(gè)文件讀取為一個(gè)字符串值

? ? ? ? ? ? ? ? ? ? ? ?helloContent = helloFile.read() >>> helloContent 'Hello world!'

? ? ? ? ? ? ? ? ? ? ? ?readline()按行讀取伞插,將整個(gè)文件通過換行符讀取為一個(gè)字符串列表

? ? ? ? ? ? ? ? ? ? ? ?sonnetFile.readlines()

寫入文件割粮,調(diào)用file對(duì)象的write方法

有兩種模式:寫模式——直接復(fù)寫文件

? ? ? ? ? ? ? ? ? ? ? ? demofile = open('F:\\delicious\\demo.txt','w')

? ? ? ? ? ? ? ? ? ? ? ?demofile.write('Hello world!\n')

? ? ? ? ? ? ? ? ? ? ? ?添加模式——在文件末尾添加文本

? ? ? ? ? ? ? ? ? ? ? ? demofile = open('F:\\delicious\\demo.txt','a')

? ? ? ? ? ? ? ? ? ? ? ? demofile.write('Bacon is not a vegetable.')

PS:

write()方法不會(huì)像print()函數(shù)那樣,在字符串的末尾自動(dòng)添加換行字符媚污。必須自己添加該字符舀瓢。

如果傳遞給open()的文件名不存在,寫模式和添加模式都會(huì)創(chuàng)建一個(gè)新的空文件耗美。在讀取或?qū)懭胛募缶┧瑁{(diào)用close()方法,然后才能再次打開該文件商架。

3)調(diào)用File 對(duì)象的close()方法堰怨,關(guān)閉該文件。

? ? ?baconFile.close()

3.用shelve 模塊保存變量

1)shelve類似于一個(gè)key-value數(shù)據(jù)庫(kù)蛇摸,可以很方便的用來保存Python的內(nèi)存對(duì)象备图,其內(nèi)部使用pickle來序列化數(shù)據(jù),簡(jiǎn)單來說赶袄,使用者可以將一個(gè)列表揽涮、字典、或者用戶自定義的類實(shí)例保存到shelve中饿肺,下次需要用的時(shí)候直接取出來绞吁,就是一個(gè)Python內(nèi)存對(duì)象,不需要像傳統(tǒng)數(shù)據(jù)庫(kù)一樣唬格,先取出數(shù)據(jù)家破,然后用這些數(shù)據(jù)重新構(gòu)造一遍所需要的對(duì)象。

2)調(diào)用函數(shù)shelve.open()并傳入一個(gè)文件名购岗,然后將返回的值保存在一個(gè)變量中汰聋。可以對(duì)這個(gè)變量的shelf 值進(jìn)行修改喊积,就像它是一個(gè)字典一樣烹困。當(dāng)你完成時(shí),在這個(gè)值上調(diào)用close()乾吻。

3)在Windows 上運(yùn)行前面的代碼髓梅,你會(huì)看到在當(dāng)前工作目錄下有3 個(gè)新文件:mydata.bak、mydata.dat 和mydata.dir

4)就像字典一樣绎签,shelf 值有keys()和values()方法枯饿,返回shelf 中鍵和值的類似列表的值。因?yàn)檫@些方法返回類似列表的值诡必,而不是真正的列表奢方,所以應(yīng)該將它們傳遞給list()函數(shù),取得列表的形式。

4.用pprint.pformat()函數(shù)保存變量






最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蟋字,一起剝皮案震驚了整個(gè)濱河市稿蹲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鹊奖,老刑警劉巖苛聘,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異忠聚,居然都是意外死亡设哗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門咒林,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熬拒,“玉大人,你說我怎么就攤上這事垫竞∨焖冢” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵欢瞪,是天一觀的道長(zhǎng)活烙。 經(jīng)常有香客問我,道長(zhǎng)遣鼓,這世上最難降的妖魔是什么啸盏? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮骑祟,結(jié)果婚禮上回懦,老公的妹妹穿的比我還像新娘。我一直安慰自己次企,他們只是感情好怯晕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缸棵,像睡著了一般舟茶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上堵第,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天吧凉,我揣著相機(jī)與錄音,去河邊找鬼踏志。 笑死阀捅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狰贯。 我是一名探鬼主播也搓,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赏廓,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼涵紊!你這毒婦竟也來了傍妒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤摸柄,失蹤者是張志新(化名)和其女友劉穎颤练,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驱负,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嗦玖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了跃脊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宇挫。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖酪术,靈堂內(nèi)的尸體忽然破棺而出器瘪,到底是詐尸還是另有隱情,我是刑警寧澤绘雁,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布橡疼,位于F島的核電站,受9級(jí)特大地震影響庐舟,放射性物質(zhì)發(fā)生泄漏欣除。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一挪略、第九天 我趴在偏房一處隱蔽的房頂上張望历帚。 院中可真熱鬧,春花似錦杠娱、人聲如沸挽牢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)卓研。三九已至,卻和暖如春睹簇,著一層夾襖步出監(jiān)牢的瞬間奏赘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工太惠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留磨淌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓凿渊,卻偏偏與公主長(zhǎng)得像梁只,于是被迫代替她去往敵國(guó)和親缚柳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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