国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

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

服務器之家 - 腳本之家 - Python - python 實現壓縮和解壓縮的示例

python 實現壓縮和解壓縮的示例

2020-09-22 23:59諸子流 Python

這篇文章主要介紹了python 實現壓縮和解壓縮的示例,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下

一、說明

壓縮解壓縮是日常常用的操作,不管是windows上圖形界面的操作,還是linux上用命令來進行壓縮解壓縮,總的而言都還是比較方便的。

但用代碼來實現就沒做過,近期也得實現代碼壓縮與解壓縮操作,所以就抽時間來研究一下。

二、zip文件壓縮和解壓縮實現

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import os
import zipfile
 
 
# 函數功能是zip_file_list所有文件,和zip_dir_list所有目錄下的所有文件,被壓縮到一個zip_file_name的壓縮文件中
def my_zip_function(zip_file_name, zip_file_list=[], zip_dir_list=[]):
  # 壓縮文件最后需要close,為了方便我們直接用with
  with zipfile.ZipFile(zip_file_name, "w") as zip_obj:
    # 壓縮文件
    for tmp_file in zip_file_list:
      zip_obj.write(tmp_file)
    # 壓縮目錄
    for tmp_dir in zip_dir_list:
      # zipfile沒有直接壓縮目錄的功能,要壓縮目錄只能遍歷目錄一個一個文件壓。
      for root, dirs, files in os.walk(tmp_dir):
        # 如果想要目錄為空時仍將該目錄壓縮進去,該目錄也要壓縮一遍;反之請將以下行注釋掉
        zip_obj.write(root)
        for tmp_file in files:
          # 拼接文件完整目錄,不然只用文件名代碼找不到文件
          tmp_file_path = os.path.join(root, tmp_file)
          zip_obj.write(tmp_file_path)
 
 
# 函數功能是遍歷壓縮文件中的所有文件
def my_traversal_zip_function(zip_file_name):
  with zipfile.ZipFile(zip_file_name, "r") as zip_obj:
    # 返回結果是一個ZipInfo列表
    # 如果在壓縮時顯示壓縮目錄,則目錄也作為一個單獨的ZipInfo呈現在列表中;反之則沒有目錄的ZipInfo
    all_file_list = zip_obj.infolist()
    for tmp_file in all_file_list:
      print(tmp_file.filename)
      # 還可以在不解壓的情況下直接讀取文件的內容
      # 可以通過ZipInfo.is_dir()來區分是文件還是目錄
      # if not tmp_file.is_dir():
      #   with zip_obj.open(tmp_file) as zip_fd:
      #     print(zip_fd.read())
 
 
# 函數的功能是將壓縮文件直接解壓
def my_unzip_function(zip_file_name, path="."):
  with zipfile.ZipFile(zip_file_name, "r") as zip_obj:
    zip_obj.extractall(path=path)
 
 
if __name__ == "__main__":
  zip_file_name = "test_zip.zip"
  # 自己在測試時要先自行創建好要壓縮的文件和目錄
  zip_file_list = ["test_tar_file1.txt", "test_tar_file2.txt"]
  zip_dir_list = ["test_tar_dir"]
  my_zip_function(zip_file_name, zip_file_list, zip_dir_list)
  my_traversal_zip_function(zip_file_name)
  # my_unzip_function(zip_file_name, path=".")

 三、tar文件的壓縮與解壓縮實現

除了直接的.tar文件,還包括.tar.gz/.tar.bz2/.tar.xz等格式文件的壓縮與解壓縮實現。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import os
import tarfile
 
 
# 函數功能是tar_file_list所有文件,和tar_dir_list所有目錄下的所有文件,被壓縮到一個tar_file_name的壓縮文件中
def my_tar_function(tar_file_name, tar_file_list=[], tar_dir_list=[], model="w"):
  # 本來也應該是tarfile.TarFile(tar_file_name, model)來創建的,但TarFile不支持"r:gz"等擴展形式
  # 壓縮文件最后需要close,為了方便我們直接用with
  with tarfile.open(tar_file_name, model) as tar_obj:
    # 壓縮文件
    for tmp_file in tar_file_list:
      tar_obj.add(tmp_file)
    # 壓縮目錄。和zipfile相比tarfile允許直接壓縮目錄,而不需要去遍歷目錄一個個文件壓
    for tmp_dir in tar_dir_list:
      tar_obj.add(tmp_dir)
 
 
# 函數功能是遍歷壓縮文件中的所有文件
def my_traversal_tar_function(tar_file_name, model="r"):
  with tarfile.open(tar_file_name, model) as tar_obj:
    # 返回結果是一個TarInfo列表
    all_file_list = tar_obj.getmembers()
    for tmp_file in all_file_list:
      print(tmp_file.name)
      # 還可以在不解壓的情況下直接讀取文件的內容
      # 可以通過TarInfo.isdir()來區分是文件還是目錄
      # if not tmp_file.isdir():
      #   # 相當于zip的open,并不會把文件給解壓出來
      #   tar_fd = tar_obj.extractfile(tmp_file)
      #   print(tar_fd.read())
 
 
# 函數的功能是將壓縮文件直接解壓
def my_untar_function(tar_file_name, path=".", model="r"):
  with tarfile.open(tar_file_name, model) as tar_obj:
    tar_obj.extractall(path=path)
 
 
if __name__ == "__main__":
  # 自己在測試時要先自行創建好要壓縮的文件和目錄
  tar_file_list = ["test_tar_file1.txt", "test_tar_file2.txt"]
  tar_dir_list = ["test_tar_dir"]
  tar_file_name = "test_tar.tar"
  # 在.tar基礎上,tarfile還支持gz/bz2/xz的壓縮,只要在原來打開模式的基礎上使用:或|接上壓縮方法即可,如"r:gz"
  # 特別的,如果是讀取文件,可以使用"r:*"來指示嘗試以任意格式讀取
  open_model = "w"
  # open_model = "w:gz"
  my_tar_function(tar_file_name, tar_file_list, tar_dir_list, model=open_model)
  open_model = "r"
  # open_model = "r:*"
  my_traversal_tar_function(tar_file_name, model=open_model)
  # open_model = "r:*"
  # my_untar_function(tar_file_name, path=".", model=open_model)

參考:

https://docs.python.org/3/library/zipfile.html#module-zipfile

以上就是python 實現壓縮和解壓縮的示例的詳細內容,更多關于Python 壓縮和解壓縮的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.cnblogs.com/lsdb/p/13572577.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 99在线视频播放 | 精品日韩一区 | 成人精品视频在线 | 日韩成人在线观看 | 一级片视频在线观看 | 国内精品一区二区 | 欧美成人一区二免费视频软件 | 一级片免费视频 | 亚洲国产精品久久久 | 一级片少妇| 久久久91精品国产一区二区三区 | 久久奸| 成人精品一区二区三区中文字幕 | 精品九九久久 | 久久久一区二区三区 | 欧美国产在线观看 | 色在线播放 | 亚洲午夜在线 | 18av网站 | 一级毛片观看 | 最近2018年手机中文字幕版 | 91一区二区在线 | 台湾一级特黄aa大片免费看 | 亚洲午夜精品视频 | 中文字幕在线观看av | 欧美日韩一区二区电影 | 亚洲一二三 | 亚洲日本乱码在线观看 | 精品日韩| 中文字幕二区 | 中文字幕精品一区二区三区精品 | 波多野结衣福利电影 | 精品伊人久久 | 一呦二呦三呦国产精品 | 免费久草| 九色 在线 | 中文字幕第5页 | 黄色大片网 | av成人在线观看 | 精品国产乱码久久久久久牛牛 | 国产激情偷乱视频一区二区三区 |