亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python學(xué)習(xí)036-----python之文件(一):文件的讀取和寫入

系統(tǒng) 1875 0

【打開文件】
?我們 使用open()函數(shù)來打開文件 ,并返回文件對象。open()的參數(shù)有很多,如下:

這些參數(shù)中的第一、二個(gè)參數(shù)是重點(diǎn)。

第一個(gè)參數(shù) 是傳入文件名: 若只有文件名,不帶路徑的話,python會在當(dāng)前路徑下查找該文件并打開。

第二個(gè)參數(shù) 是文件的打開模式:其有以下幾種參數(shù):
===========================================================
1. r ? ? 以只讀方式打開文件( 默認(rèn) )。
2. w ? ?以寫入的方式打開文件,會覆蓋已存在的文件。
3. x ? ? 如果文件已經(jīng)存在,使用此模式打開將引發(fā)異常。?
4. a ? ? 以寫入模式打開,如果文件已存在,則在末尾追加寫入。
5. b ? ? 以二進(jìn)制模式打開文件。
6. t ? ? ?以文本模式打開文件( 默認(rèn) )
7. + ? ? 可讀寫模式( 添加到其他模式中使用 )
8. U ? ? 通用換行符支持。
===========================================================

下面我們 使用open()來打開一個(gè)文件 。

            
              f = open('E:\\學(xué)習(xí)資料\\研究生\\小甲魚python\\課程筆記\\5.文件\\test.txt')
print( f )
            
          

運(yùn)行結(jié)果:

【注意】: 打開文件時(shí),第一個(gè)參數(shù)為文件路徑,此時(shí)路徑中的斜杠要寫成雙斜杠。因?yàn)閱涡备?
? ? ? ? ? ? ? ? 會轉(zhuǎn)義,從而導(dǎo)致輸入的路徑無效。另外直接用open()獲取的是文件對象,如需讀取,
? ? ? ? ? ? ? ??還需要使用下面介紹的文件對象方法。

【文件對象方法】
對上面的文件對象進(jìn)行讀取和寫入的方法
===========================================================
f.close() ? ? ? ? ? ? ? ? ?關(guān)閉文件( 如果有文件寫入操作,應(yīng)該在寫入后關(guān)閉
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文件,如果不關(guān)閉,若中途斷電,那么之前寫入的數(shù)
?? ??? ??? ??? ??? ??? ??? ? ?據(jù)就不會被保存了 )
f.read( n ) ? ? ? ? ? ? ? 從文件讀取 n 個(gè)字符,當(dāng)未給定 n 或給定負(fù)值的時(shí)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 候,讀取剩余的所有字符,然后作為字符串返回
f.readline() ? ? ? ? ? ? 以寫入模式打開,如果文件存在,則在末尾追加寫入
list() ? ? ? ? ? ? ? ? ? ? ? 將文件對象轉(zhuǎn)化為列表對象,進(jìn)行迭代讀取
f.write( str ) ? ? ? ? ? ?將字符串str寫入文件
f.writelines( seq ) ? 向文件寫入字符串序列seq,seq應(yīng)該是一個(gè)返回字符
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?串的可迭代對象
f.seek(offset,from) 在文件中移動文件指針,從from( 0代表文件起始位置,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1代表當(dāng)前位置,2代表文件末尾 )便宜offset個(gè)字節(jié)
f.tell() ? ? ? ? ? ? ? ? ? ? 返回當(dāng)前在文件中的位置 ? ? ?
===========================================================
-------------------------------------------------------------------------------------------------------
read()方法
直接讀取整個(gè)文件,將所有內(nèi)容以字符串形式輸出。read不能對單行數(shù)據(jù)進(jìn)行分離操作。它占
用內(nèi)存很大。
【思考】:下面的代碼會讀出什么

            
              a = f.read()
b = f.read(-1)
c = f.read(10)
print( a )
print( b )
print( c )
'''
乍一看,會讀出如下數(shù)據(jù):
this is a test for the function of 'open()'
this is a test for the function of 'open()'
this is a?
【實(shí)際上】輸出的是:
this is a test for the function of 'open()'


'''
            
          

【解析】:
后兩行空著的原因是:
第一行中的read()函數(shù)已經(jīng)讀完了所有的字符,指針已經(jīng)移動到了字符串末尾,所以再次讀取已經(jīng)
沒有東西可讀了。想要再次讀取,只能重新打開文件( 用open()函數(shù) )。根據(jù)以上內(nèi)容便可推知以下
代碼的輸出結(jié)果了:

            
              f = open('E:\\學(xué)習(xí)資料\\研究生\\小甲魚python\\課程筆記\\5.文件\\test.txt')
b = f.read(5)
print( b ) ? ? ? ? ? #【輸出】:this
c = f.read(10)
print( c ) ? ? ? ? ? #【輸出】:is?
            
          

readline()方法:
readline()每次讀取(下)一行數(shù)據(jù),可以對數(shù)據(jù)進(jìn)行分離操作。它占用內(nèi)存很小。

            
              f = open('E:\\學(xué)習(xí)資料\\研究生\\小甲魚python\\課程筆記\\5.文件\\test1.txt')
d = f.readline()
e = f.readline()
g = f.readline()
h = f.readline()
print(d) ?#【輸出】111111111111111111111111111
print(e) ?#【輸出】222222222222222222222222222
print(g) ?#【輸出】333333333333333333333333333
            
          

readlines()方法:
readlines()一次性讀取所有行文件,可以利用遍歷的方法對每一行數(shù)據(jù)進(jìn)行處理。占用內(nèi)存比較大。

            
              f = open('E:\\學(xué)習(xí)資料\\研究生\\小甲魚python\\課程筆記\\5.文件\\test1.txt')
m = f.readlines()
print(m)
print()
#【輸出】:['111111111111111111111111111\n', '222222222222222222222222222\n', '333333333333333333333333333']
            
          

上述三者性能比較:
以上三者中,read()速度最快,但功能最簡單,有時(shí)不能滿足需求。剩余兩者功能類似,但是readlines()
明顯比readline()速度快很多。

【文件內(nèi)容的遍歷】
談到遍歷文件內(nèi)容,大家一般會想到如下的方法:

            
              f = open('E:\\學(xué)習(xí)資料\\研究生\\小甲魚python\\課程筆記\\5.文件\\test1.txt')
lines = list(f)
for each_line in lines:
?? ?print(each_line)
#【輸出】:
#1111111111111111111111
#2222222222222222222222
#3333333333333333333333
            
          

但是,上面的方法實(shí)際上效率非常低,當(dāng)數(shù)據(jù)非常多的時(shí)候,效率會極其低下。所以我們 應(yīng)該使用
如下的方法,亦能達(dá)到同樣的效果。

            
              f = open('E:\\學(xué)習(xí)資料\\研究生\\小甲魚python\\課程筆記\\5.文件\\test1.txt')
for line in f:
?? ?print(line)
            
          

這樣的方法,簡潔且效率高。

【文件的寫入】
對文件進(jìn)行寫入要首先確保文件狀態(tài)是可寫入的('w'),前面的文件默認(rèn)狀態(tài)是只讀('r'),所以這里我
們新創(chuàng)建一個(gè)可寫入的文檔進(jìn)行操作。

            
              f = open('E:\\學(xué)習(xí)資料\\研究生\\小甲魚python\\課程筆記\\5.文件\\test2.txt', 'w')
a = f.write( '自律使我自由!' )
print( a )
#【輸出】:7 (說明我們寫入了7個(gè)字符)
f = open('E:\\學(xué)習(xí)資料\\研究生\\小甲魚python\\課程筆記\\5.文件\\test2.txt')
mess = f.read()
print( mess ) #【輸出】:自律使我自由! 說明內(nèi)容已經(jīng)被成功寫入了。
            
          

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 在线观看日本中文字幕 | h片在线播放| 久久综合久久综合久久 | 大尺度福利视频在线观看网址 | 久久er99 | 欧美成人精品福利在线视频 | 久久婷婷国产一区二区三区 | 天天干天天拍天天射 | 欧美成人免费mv在线播放 | 免费香蕉成视频成人网 | 欧美日韩在线免费观看 | 东京99热| 老色99久久九九精品尤物 | 色婷婷六月桃花综合影院 | 国产色视频一区二区三区 | 色视频在线观看视频 | 这里只有久久精品视频 | 免费播放毛片 | 欧美理论大片清免费观看 | 在线观看国产福利 | 国产色视频一区二区三区 | 香蕉国产| 干干日日 | 免费区欧美一级毛片 | 久久久久综合网 | 欧美精品国产日韩综合在线 | 日韩精品一区二区三区四区 | 久久99国产亚洲高清观看韩国 | 国产精品成人免费视频99 | 免费播放国产性色生活片 | 噜噜色综合 | 青青青在线观看免费视频精品 | 九九热观看视频 | 中文字幕在线观看 | 天天躁天天碰天天看 | 天天干夜夜谢 | 深夜福利视频网址 | 免费香蕉一区二区在线观看 | 国产成人精品免费视 | 欧美草草 | 久久99精品热在线观看15 |