讀寫檔案
首先看乙個例子:
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 #檔案中用到的換行模式,是乙個tuple
f.softspace #boolean型,一般為0,據說用於print
檔案的讀寫方法:
f.read([size]) #size為讀取的長度,以byte為單位
f.readline([size]) #讀一行,如果定義了size,有可能返回的只是一qokgmjiw行的一部分
f.readlines([size]) #把檔案每一行作為乙個list的乙個成員,並返回這個list。其實它的內部是通過迴圈呼叫readline()來實現的。如果提供swww.cppcns.comize引數,size是表示讀取內容的總長,也就是說可能唯讀到檔案的一部分
f.wri程式設計客棧te(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.closed
false
>>> f.mode
'w'>>> f.name
'hi.txt'
>>> f.encoding
壓縮和解壓縮檔案(zip/unzip)
1,單個檔案壓縮成zip檔案
#!/usr/bin/python
import zipfile
f = 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/python
import zipfile
www.cppcns.comzfile = 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/python
import zipfile
import os
f = 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
本文標題: 使用python讀寫及壓縮和解壓縮檔案的示例
本文位址:
c 使用SharpZipLib壓縮和解壓縮檔案
正常zip方式壓縮檔案,然後用wrar工具可以解壓出來 開始用wrar3.4版本的怎麼也解不出來,以為是不支援wrar解壓,後來改用3.9及4.11版本可以實現正常解壓,搞了半天時間,原來是版本問題,版本不對害死人啊 另外wrar壓縮時選擇 zip 選項壓縮時,再用此類進行解壓,也可以正常解壓。在此...
使用GZipStream實現壓縮和解壓縮
之前做專案,涉及到存入到資料庫或者http傳輸的資料量比較大,這個時候,就需要考慮在存入資料庫或者傳送傳輸之前,將資料壓縮下,當從資料庫中取出時,再解壓還原資料。特地找了下發現有gzipstream可以實現這個功能。此類表示gzip資料格式,該格式使用行業標準演算法進行無損檔案壓縮和解壓縮。該格式包...
iOS中使用ZipArchive 壓縮和解壓縮檔案
引自 在本教程中,我將演示如何在ios程式中壓縮和解壓縮檔案。我們將使用乙個叫做ziparchive的第三方庫來實現。儘管壓縮和解壓縮有許多其他的方案可選,但是我覺得ziparchive庫是最快捷 最簡單的解決方案。let s go。為什麼我需要解壓縮檔案 有許多原因能解釋為什麼我要在工程中使用壓縮...