使用Python讀寫及壓縮和解壓縮檔案的樣本,

來源:互聯網
上載者:User

使用Python讀寫及壓縮和解壓縮檔案的樣本,

讀寫檔案
首先看一個例子:

f = open('thefile.txt','w')  #以寫方式開啟,try:  f.write('wokao')finally:  f.close()

檔案的開啟檔案:

f = open(‘檔案','mode')‘r':唯讀(預設。如果檔案不存在,則拋出錯誤)‘w':唯寫(如果檔案不存在,則自動建立檔案),此時無法調用f.read()方法,且當調用f.write()時,將清空檔案原有內容‘a':附加到檔案末尾‘r+':讀寫

如果需要以二進位方式開啟檔案,需要在mode後面加上字元”b”,比如”rb”,”wb”等

檔案的屬性:

f.closed #標記檔案是否已經關閉,由close()改寫f.encoding #檔案編碼f.mode #開啟模式f.name #檔案名稱f.newlines #檔案中用到的換行模式,是一個tuplef.softspace #boolean型,一般為0,據說用於print

檔案的讀寫方法:

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的內容全部寫到檔案中。這個函數也只是忠實地寫入,不會在每行後面加上任何東西f.close() #關閉檔案f.flush() #把緩衝區的內容寫入硬碟f.fileno() #返回一個長整型的”檔案標籤“f.isatty() #檔案是否是一個終端裝置檔案(unix系統中的)f.tell() #返迴文件操作標記的當前位置,以檔案的開頭為原點f.next() #返回下一行,並將檔案操作標記位移到下一行。把一個file用於for … in file這樣的語句時,就是調用next()函數來實現遍曆的f.seek(offset[,from]) #將檔案打操作標記移到offset的位置。這個offset一般是相對於檔案的開頭來計算的,一般為正數。但如果提供了from參數就不一定了,from可以為0表示從頭開始計算,1表示以當前位置為原點計算。2表示以檔案末尾為原點進行計算。需要注意,如果檔案以a或a+的模式開啟,每次進行寫操作時,檔案操作標記會自動返回到檔案末尾。f.truncate([size]) #把檔案裁成規定的大小,預設的是裁到當前檔案操作標記的位置。

Python在讀取一個檔案時,會記住其在檔案中的位置,如果第二次仍需要從頭讀取,則需要調用f.seek(0)重新從頭開始讀取。

一些例子:

>>> f = open('hi.txt','w')>>> f.closedFalse>>> f.mode'w'>>> f.name'hi.txt'>>> f.encoding


壓縮和解壓縮檔案(zip/unzip)
1,單個檔案壓縮成zip檔案

#!/usr/bin/pythonimport zipfilef = zipfile.ZipFile('archive.zip','w',zipfile.ZIP_DEFLATED)f.write('1.py')f.write('/root/install.log')f.close()

仔細觀察壓縮以後的archive.zip,裡面有一個1.py和一個root的目錄,root目錄下有一個install.log
ZIP_DEFLATED是壓縮標誌,如果使用它需要編譯了zlib模組,如果僅僅是打包而不壓縮的話,可以改為zipfile.ZIP_STORED

2,把zip檔案解壓縮

#!/usr/bin/pythonimport zipfilezfile = zipfile.ZipFile('archive.zip','r')for filename in zfile.namelist():  data = zfile.read(filename)  file = open(filename, 'w+b')  file.write(data)  file.close()

如果archive.zip裡有目錄,則在目前的目錄下也應該存在對應的目錄,否則會報錯。

3,把整個檔案夾壓縮

#!/usr/bin/pythonimport zipfileimport osf = zipfile.ZipFile('archive.zip','w',zipfile.ZIP_DEFLATED)startdir = "c:\\\\mydirectory"for dirpath, dirnames, filenames in os.walk(startdir):  for filename in filenames:    f.write(os.path.join(dirpath,filename))f.close()

如果出現:

Compression requires the (missing) zlib module

解決方案:

yum install zlib zlib-devel

,然後重新編譯安裝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.