1. 程式人生 > >python學習筆記(三)

python學習筆記(三)

list 內存 寫入 odin move 列表 付出 open ada

文件的操作一般分三步:

1、打開文件,獲取文件的指針(句柄)

2、通過指針(句柄)操作文件

3、關閉文件

現在有以下文件:

        我們為愛還在學 
        學溝通的語言
        學著諒解
        學著不流淚  
        等到我們學會飛
        飛越黑夜和考驗
        日子就要從孤單裏畢業
        我們用多一點點的辛苦
        來交換多一點點的幸福 
        就算幸福
        還有一段路   
        等我們學會忍耐和付出
        這愛情一定會有張證書

  文件的基本操作:

f = open(‘file.txt‘,‘r‘) #以只讀方式打開一個文件,獲取文件句柄,如果是讀的話,r可以不寫,默認就是只讀,
        在python2中還有file方法可以打開文件,python3中file方法已經沒有了,只有open        
        frist_line = f.readline()#獲取文件的第一行內容,返回的是一個list
        print(frist_line)#打印第一行
        res = f.read()#讀取所有文件內容
        print(res)
        f.close()#關閉文件

打開文件需要指定文件打開的路徑,以及打開的方式,打開後就可以獲取文件的句柄對文件進行操作
文件的打開模式:
    #r模式,默認的模式,讀文件內容,不能寫,並且文件必須存在不存在就報錯
#w寫模式,不能讀,沒有就創建,會先清空文件內容然後重新寫
#a追加模式,只能寫,在文件的末尾添加內容
‘+’號表示可以同時讀寫文件
       # r +,【可讀、可寫;可追加,如果打開的文件不存在的話,會報錯】
# w +,【寫讀模式,使用w + 的話,已經存在的文件內容會被清空,可以讀到已經寫的文件內容】
# a +,【追加讀寫模式,不存在則創建;存在則只追加內容;】
#總結:只要是讀模式文件必須存在,只要是w模式一定會你先清空文件
"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
            rU
            r+U

  "b"表示處理二進制文件(如:FTP發送上傳ISO鏡像文件,linux可忽略,windows處理二進制文件時需標註)

            rb
            wb
            ab

  文件的操作方法:

f = open(‘file.txt‘,‘r+‘,encoding=‘utf-8‘)#encoding參數可以指定文件的編碼

f.readline()#讀一行 f.readable()#判斷文件是否可讀 fr.writable()#判斷文件是否可寫 fr.encoding#打印文件的編碼 f.read()#讀取所有內容,大文件時不要用,因為會把文件內容都讀到內存中,內存不夠的話,會把內存撐爆
f.readlines()#讀取所有文件內容,返回一個list,元素是每行的數據,大文件時不要用,因為會把文件內容都讀到內存中,內存不夠的話,會把內存撐爆 f.tell()#獲取當前文件的指針指向 f.seek(0)#把當前文件指針指向哪 f.write(‘愛情證書‘)#寫入內容 f.fulsh()#寫入文件後,立即從內存中把數據寫到磁盤中 f.truncate()#清空文件內容 f.writelines([‘愛情證書‘,‘孫燕姿‘])#將一個列表寫入文件中 f.close()關閉文件 大文件時,讀取文件高效的操作方法:
用上面的read()和readlines()方法操作文件的話,會先把文件所有內容讀到內存中,這樣的話,內存數據一多,非常卡,高效的操作,就是讀一行操作一行,讀過的內容就從內存中釋放了
#文件對象也是可以叠代的
  # count = 1
  # for line in f:
  # print(‘第%s行是%s‘%(count,line))  這樣就是一行一行的讀取文件
  # count +=1

修改文件:
修改文件的話,有兩種方式,一種是把文件的全部內容都讀到內存中,然後把原有的文件內容清空,重新寫新的內容;
第二種是把修改後的文件內容寫到一個新的文件中(推薦第二種)
(一)、第一種
f = open(‘b.txt‘,‘a+‘)#f代表的是這個文件的隊形,也叫做句柄
# res = f.read()
# f.seek(0)
# f.truncate()
# new_res = res.replace(‘nnnn‘,‘nono‘)
# f.write(new_res)

# f.close()
或者: with可以在使用完文件後自動關閉文件
# with open(‘b.txt‘,‘w+‘,encoding=‘utf-8‘)  as f:
# f.seek(0)
# res = f.read()
# f.seek(0)
# f.truncate()
# new_res = res.replace(‘nnnn‘,‘tttt‘)
# f.write(new_res)
(二、)第二種
import os

# with open(‘b.txt‘,‘r+‘,encoding=‘utf-8‘) as fr , open(‘a.txt‘,‘w‘,encoding=‘utf-8‘) as fw:
# for line in fr:
# new_line = line.replace(‘nono‘,‘tttt‘)
# fw.write(new_line)
# os.remove(‘b.txt‘)
# os.rename(‘a.txt‘,‘b.txt‘)

  

python學習筆記(三)