『壹』 python怎樣壓縮和解壓縮ZIP文件
1、python使用zipfile模塊壓縮和解壓ZIP文件
2、讀取zip文件
首先,通過zipfile模塊打開指定zip文件,如:
zpfd = zipfile.ZipFile(path, mode='r')
對於zipfile,其標志與open所用的打開文件標志有所不同,不能識別 'rb'。
然後,讀取zip文件中的內容,zipfile對象提供一個read(name)的方法,name為zip文件中的一個文件入口,執行完成之後,將返回讀出的內容,如:
for filename in zpfd.namelist():
tmpcont = zpfd.read(filename)
print 'len(tmpcont)', 'tmpcont'
需要注意的是,讀取zip文件時,只能讀取內容
3、寫入zip文件
首先,需要zipfile模塊寫打開或創建zip文件,如:
zpfd = zipfile.ZipFile(path, mode='w')
寫打開是標志可以為'w'或'a'('a'表示寫入一個zip文件), 或者傳入第三個參數cmopression壓縮標志
compression=zipfile.ZIP_DEFLATED 需要導入zlib模塊
compression=zipfile.ZIP_STORED則表示只對文件進行打包,並不壓縮
寫
入有兩種方式,一種是直接寫入一個已經存在的文件,可使用zipfile對象中write(filename, arcname,
compress_type)第一個參數為文件名,第二個參數指寫入zip文件中的文件名,默認與filename一致,第三個參數壓縮標志可以覆蓋打開
zipfile時的使用參數;另一種是寫入一個字元串,可使用zipfile對象中的writestr(zinfo_or_arcname,
bytes),第一個參數是zipinfo對象或寫到zip文件中的壓縮名,第二個參數是待寫入的字元串
4、最後,對於打開的zipfile對象需要進行關閉,從而使得寫入內容真正寫入磁碟,即:
zpfd.close()
『貳』 文件壓縮
將多個文件或目錄合並成為一個特殊的文件
減小文件的體積
加快資源的傳輸
節省網路的帶寬
windows: rar zip 其實支持很多類型的壓縮
linux: zip tar.gz ....
windows與linux互通 建議使用: zip
格式 壓縮工具
.zip zip壓縮工具
.gz gzip壓縮工具,只能壓縮文件,會刪除原文件(通常配合tar使用)
.bz2 bzip2壓縮工具,只能壓縮文件,會刪除原文件(通常配合tar使用)
.tar.gz 先使用tar命令歸檔打包,然後使用gzip壓縮
.tar.bz2 先使用tar命令歸檔打包,然後使用bzip壓縮
Linux gzip工具使用
1.gzip打包與壓縮 ,僅對文件有效.
gzip filename 打包
gzip -d filename.gz 解包
zcat filename.gz 查看包內文件的內容
linux本身沒有gzip命令,需yum install gzip -y進行安裝
gzip file #對文件進行壓縮
zcat file.gz #查看gz壓縮後的文件
gzip -d file.gz #解壓gzip的壓縮包
gzip CentOS-Vault.repo --> CentOS-Vault.repo.gz
zcat CentOS-Vault.repo.gz --> 查看不想解壓的壓縮包
默認情況下沒有zip和unzip工具,需要進行安裝 yum install zip unzip -y
1.壓縮文件為zip包
zip filename.zip filename
unzip -l filename.zip #查看壓縮包內容
2.壓縮目錄為zip包
zip -r dir.zip dir/
3.查看zip壓縮包文件是否完整
zip -T filename.zip
test of filename.zip OK
4.不解壓壓縮查看壓縮包中的內容
unzip -l filename.zip
unzip -t filename.zip #檢測文件是 否都ok
5.解壓zip文件包, 默認解壓至當前目錄
unzip filename.zip
6.解壓zip內容至/opt目錄
unzip filename.zip -d /opt/
tar是linux下最常用的壓縮與解壓縮, 支持文件和目錄的壓縮歸檔
c #創建新的歸檔文件
x #對歸檔文件解包
t #列出歸檔文件里的文件列表
f #指定包文件名,多參數f寫最後
z #使用gzip壓縮歸檔後的文件(.tar.gz)
j #使用bzip2壓縮歸檔後的文件(.tar.bz2)
J #使用xz壓縮歸檔後的文件(tar.xz)
C #指定解壓目錄位置
X #排除多個文件(寫入需要排除的文件名稱)
h #打包軟鏈接
--exclude #在打包的時候寫入需要排除文件或目錄
cjf #打包tar.bz格式 *
cJf #打包tar.xz格式 使用田少,不考慮
zxf #解壓tar.gz格式 *
jxf #解壓tar.bz格式 *
常用
czf #打包tar.gz格式 ( )
tf #查看壓縮包內容
xf #自動選擇解壓模式 ( )
將文件或目錄進行打包壓縮
tar czf test.tar.gz test/ test2/ #以gzip方式壓縮
tar cjf test.tar.bz2 dir.txt dir/ #以bz2方式壓縮
tar tf test.tar.gz
tar tf test.tar.bz2
tar tf test.tar.xz
tar xf test.tar.gz
tar xf test.tar.bz2
tar xf test.tar.xz
tar xf root.tar.gz -C /tmp/ #解壓至指定目錄
find tmp/ -type f | xargs tar czf tmp.tar.gz
tar czf tmp.tar.gz $(find /tmp/ -type f)
tar czf etc.tar.gz /etc/ --exclude=etc/services
tar czf etc.tar.gz /etc/ --exclude=etc/passwd -exclude=etc/shadow
cat pc.txt
etc/gshadow
etc/gshadow-
etc/passwd
etc/passwd
etc/shadow
etc/shadow
etc/security/opasswd
etc/pam.d/passwd
tar czXf pc.txt etc.tar.gz /etc/
yum install mariadb-server
systemctl start mariadb
mkdir /backup
tar cJf /backup/mysql.tar.xz /var/lib/mysql
tar xf /backup/mysql.tar.xz -C /
cd /var/lib/mysql
tar cJf /backup/mysql.tar.xz *
tar tf /backup/mysql.tar.xz
tar xf /backup/mysql.tar.xz C /var/lib/mysql