python 檔案讀寫操作

來源:互聯網
上載者:User

標籤:coding   readline   bin   讀取   並且   filename   清空   大檔案讀取   指定   


  • open開啟檔案後一定要記得調用檔案對象的close()方法,用try/finally語句來確保最後能關閉檔案
    不能把open語句放在try塊裡,因為當開啟檔案出現異常時,檔案對象file_object無法執行close()方法
    file_name = open(‘test.file‘)
    讀取所有內容
    file_object = open(‘thefile.txt‘)
    try:
    all_the_text = file_object.read( )
    finally:
    file_object.close( )
    讀固定位元組
    file_object = open(‘abinfile‘, ‘rb‘)
    try:
    while True:
    chunk = file_object.read(100)
    if not chunk:
    break
    do_something_with(chunk)
    finally:
    file_object.close( )
    讀取每行
    list_of_all_the_lines = file_object.readlines( )
    list_of_one_the_line = file_object.readline( )

  • output = open(‘data‘, ‘w‘) wb w+
    file_object.writelines(list_of_text_strings) 寫入多行
    3.清空檔案內容
    file = open(‘test.log‘,‘w‘)
    file.truncate() 清空檔案內容
  • 檔案讀寫使用with..as 方式
    如果檔案很小,read()一次性讀取最方便;如果不能確定檔案大小,反覆調用read(size)比較保險;如果是設定檔,調用readlines()最方便
    f = open(‘/Users/michael/gbk.txt‘, ‘r‘, encoding=‘gbk‘, errors=‘ignore‘) encoding 指定讀取檔案的編碼
    linecache,這個模組也可以解決大檔案讀取的問題,並且可以指定讀取哪一行
    面對百萬行的大型資料使用with open 是沒有問題的,但是這裡面參數的不同也會導致不同的效率。經過測試發先參數為"rb"時的效率是"r"的6倍
    linecache 用以實現高效讀取大檔案內容或者需要經常訪問的檔案,linecache先把檔案一次性讀入到緩衝中,在以後訪問檔案的時候,就不必要再從硬碟讀取
    lines = linecache.getlines(filename) 得到行列表,然後進行遍曆讀取
    line = linecache.getline(filename,linenum) 讀取指定行
    file() 函數用於建立一個 file 對象,它有一個別名叫 open()
    import cPickle as p 利用cPickle模組進行檔案的儲存讀取
    f = file(shoplistfile, ‘w‘) p.dump(shoplist, f) f.close() dump資料到檔案
    f = file(shoplistfile) storedlist = p.load(f) print storedlist load 資料從檔案
    不能把open語句放在try塊裡,因為當開啟檔案出現異常時,檔案對象file_object無法執行close()方法
    F.read([size]) #size為讀取的長度,以byte為單位
    F.readline([size]) #讀一行,如果定義了size,有可能返回的只是一行的一部分
    F.readlines([size]) #把檔案每一行作為一個list的一個成員,並返回這個list。其實它的內部是通過迴圈調用readline()來實現的。如果提供size參數,size是表示讀取內容的總長,也就是說可能唯讀到檔案的一部分。
    F.write(str) #把str寫到檔案中,write()並不會在str後加上一個分行符號
    F.writelines(seq) #把seq的內容全部寫到檔案中。這個函數也只是忠實地寫入,不會在每行後面加上任何東西
    用w或a模式開啟檔案的話,如果檔案不存在,那麼就自動建立。用w模式開啟一個已經存在的檔案時,原有檔案的內容會被清空,因為一開始檔案的操作的標記是在檔案的開頭的,這時候進行寫操作,無疑會把原有的內容給抹掉
    用U模式開啟檔案,就是支援所有的換行模式
    F.tell() #返迴文件操作標記的當前位置,以檔案的開頭為原點
    F.seek(offset[,whence]) #將檔案打操作標記移到offset的位置。這個offset一般是相對於檔案的開頭來計算的,一般為正數。但如果提供了whence參數就不一定了,whence可以為0表示從頭開始計算,1表示以當前位置為原點計算。2表示以檔案末尾為原點進行計算。如果檔案以a或a+的模式開啟,每次進行寫操作時,檔案操作標記會自動返回到檔案末尾。

    python 檔案讀寫操作

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.