激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 使用Python讀寫及壓縮和解壓縮文件的示例

使用Python讀寫及壓縮和解壓縮文件的示例

2020-09-01 09:12bear Python

Python的os模塊中提供了基本的文件讀寫方法,而zipfile模塊則針對文件的壓縮和解壓縮操作,這里我們就來看一下使用Python讀寫及壓縮和解壓縮文件的示例:

讀寫文件
首先看一個例子:

?
1
2
3
4
5
f = open('thefile.txt','w'#以寫方式打開,
try:
  f.write('wokao')
finally:
  f.close()

文件的打開方式:

?
1
2
3
4
5
f = open(‘文件','mode')
‘r':只讀(缺省。如果文件不存在,則拋出錯誤)
‘w':只寫(如果文件不存在,則自動創(chuàng)建文件),此時無法調(diào)用f.read()方法,且當(dāng)調(diào)用f.write()時,將清空文件原有內(nèi)容
‘a':附加到文件末尾
‘r+':讀寫

如果需要以二進(jìn)制方式打開文件,需要在mode后面加上字符”b”,比如”rb”,”wb”等

文件的屬性:

?
1
2
3
4
5
6
f.closed #標(biāo)記文件是否已經(jīng)關(guān)閉,由close()改寫
f.encoding #文件編碼
f.mode #打開模式
f.name #文件名
f.newlines #文件中用到的換行模式,是一個tuple
f.softspace #boolean型,一般為0,據(jù)說用于print

文件的讀寫方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
f.read([size]) #size為讀取的長度,以byte為單位
f.readline([size]) #讀一行,如果定義了size,有可能返回的只是一行的一部分
f.readlines([size]) #把文件每一行作為一個list的一個成員,并返回這個list。其實它的內(nèi)部是通過循環(huán)調(diào)用readline()來實現(xiàn)的。如果提供size參數(shù),size是表示讀取內(nèi)容的總長,也就是說可能只讀到文件的一部分
f.write(str) #把str寫到文件中,write()并不會在str后加上一個換行符
f.writelines(seq) #把seq的內(nèi)容全部寫到文件中。這個函數(shù)也只是忠實地寫入,不會在每行后面加上任何東西
f.close() #關(guān)閉文件
f.flush() #把緩沖區(qū)的內(nèi)容寫入硬盤
f.fileno() #返回一個長整型的”文件標(biāo)簽“
f.isatty() #文件是否是一個終端設(shè)備文件(unix系統(tǒng)中的)
f.tell() #返回文件操作標(biāo)記的當(dāng)前位置,以文件的開頭為原點
f.next() #返回下一行,并將文件操作標(biāo)記位移到下一行。把一個file用于for … in file這樣的語句時,就是調(diào)用next()函數(shù)來實現(xiàn)遍歷的
f.seek(offset[,from]) #將文件打操作標(biāo)記移到offset的位置。這個offset一般是相對于文件的開頭來計算的,一般為正數(shù)。但如果提供了from參數(shù)就不一定了,from可以為0表示從頭開始計算,1表示以當(dāng)前位置為原點計算。2表示以文件末尾為原點進(jìn)行計算。需要注意,如果文件以a或a+的模式打開,每次進(jìn)行寫操作時,文件操作標(biāo)記會自動返回到文件末尾。
f.truncate([size]) #把文件裁成規(guī)定的大小,默認(rèn)的是裁到當(dāng)前文件操作標(biāo)記的位置。

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

一些例子:

?
1
2
3
4
5
6
7
8
>>> f = open('hi.txt','w')
>>> f.closed
False
>>> f.mode
'w'
>>> f.name
'hi.txt'
>>> f.encoding


壓縮和解壓縮文件(zip/unzip)
1,單個文件壓縮成zip文件

?
1
2
3
4
5
6
#!/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()

仔細(xì)觀察壓縮以后的archive.zip,里面有一個1.py和一個root的目錄,root目錄下有一個install.log
ZIP_DEFLATED是壓縮標(biāo)志,如果使用它需要編譯了zlib模塊,如果僅僅是打包而不壓縮的話,可以改為zipfile.ZIP_STORED

2,把zip文件解壓縮

?
1
2
3
4
5
6
7
8
#!/usr/bin/python
import zipfile
zfile = 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里有目錄,則在當(dāng)前目錄下也應(yīng)該存在對應(yīng)的目錄,否則會報錯。

3,把整個文件夾壓縮

?
1
2
3
4
5
6
7
8
9
#!/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()

如果出現(xiàn):

?
1
Compression requires the (missing) zlib module

解決方法:

?
1
yum install zlib zlib-devel

,然后重新編譯安裝python

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区二区三区高清 | 久久一本日日摸夜夜添 | 男男啪羞羞视频网站 | 欧美18一19sex性护士农村 | 97久久精品一区二区三区观看 | 国产精品久久77777 | 黄色网址在线免费 | 在线中文字幕播放 | 欧美色淫 | 亚洲成人免费视频在线 | 久久区二区 | 美女露100%无遮挡 | 九九热九九| 欧美一级做性受免费大片免费 | 亚洲人成电影在线 | 性高湖久久久久久久久aaaaa | sese在线视频 | 精品一区二区免费视频视频 | 欧美一级毛片免费观看 | 欧美一级黄 | 免费国产精品视频 | 91成人午夜性a一级毛片 | 国产精品久久久久久久久久10秀 | 三片在线观看 | 久草在线视频新 | 黄色网址免费在线播放 | 欧美成视频在线观看 | 免费黄色短视频网站 | 毛片网站网址 | 久草热久 | 欧美一级高清免费 | 亚洲一区二区三区91 | 最新一区二区三区 | 亚洲精品一区中文字幕 | 成人午夜亚洲 | 精品一区二区三区免费爱 | 极品美女一级毛片 | 日本一区二区在线 | 欧美综合成人 | av在线免费观看中文字幕 | 最新se94se在线欧美 |