欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python tarfile壓縮包操作保姆級教程

 更新時間:2023年02月11日 08:38:38   作者:阿_焦  
TarFile類就是tar壓縮包,其由member塊組成, member塊則包括header塊和data塊. 每個member以TarInfo對象形式描述. 所以TarFile就是TarInfo的序列

前言

上次寫博客還在去年的8月底了,期間有了小寶,換工作等諸多事宜讓我踩坑采的起飛,時隔4個月,逐漸找回狀態(tài)。這篇的主題是python的第三方庫zipfile,因工作中要處理大量的壓縮包zip文件,所以趁著自由時間整理輸出下,以提高下工作的愉悅感。

1、tarfile

這個工具可以幫我們解決 zip 壓縮包的創(chuàng)建、讀取、寫入、添加、列出內(nèi)部所有的成員。更高效的處理壓縮包,已達到快速處理數(shù)據(jù)的目的。

入口1:tarfile.open(name=“sample.zip”)

tar = tarfile.open(name="sample.zip"),針對路徑名 name 返回 TarFile 對象。這個對象可以用來解壓所有、解壓出其中符合規(guī)則的文件、添加、寫入等。

import tarfile
tar = tarfile.open("sample.zip") # or tar = tarfile.open("sample.tar.gz")
tar.extractall()
tar.close()

入口2:tarfile.is_tarfile(name)

tarfile.is_tarfile(name),判斷文件是不是tar包,name為文件的路徑

import tarfile
if tarfile.is_tarfile("./tartest/tar_1.tar"):
    print(1)

2、處理 open 后的 TarFile 對象

TarFile 對象可在 with 語句中作為上下文管理器使用。 當(dāng)語句塊結(jié)束時它將自動被關(guān)閉。tarfile對象主要用來:

  • 生成歸檔的成員name
  • 生成歸檔的成員 tarnifo 對象
  • 判斷某文件在不在歸檔中
  • 將歸檔成員的相信信息打到界面上
  • 解壓整個tar包到指定目錄
  • 解壓tar包的某個文件到指定目錄
  • 將歸檔中的一個成員提取為文件tarinfo對象
  • 將指定目錄下的 jiao.txt 壓縮到指定目錄下的 tar 包,tar不存在則新建一個,存在,則替換里面的內(nèi)容
import tarfile
# if tarfile.is_tarfile("./tartest/tar_1.tar"):
#     print(1)
tar = tarfile.open("./tartest/tar_1.tar")
print("以 tarinfo 返回歸檔的成員:", tar.getmembers())
# 以 tarinfo 返回歸檔的成員: [<TarInfo 'tar_1' at 0x1a74e3c57c0>, <TarInfo 'tar_1/jiao.txt' at 0x1a74e3c5e80>]
print("以 名稱 返回歸檔的成員:", tar.getnames())
# 以 名稱 返回歸檔的成員: ['tar_1', 'tar_1/jiao.txt']
print("如果name在歸檔中找到,則返回True", tar.getmember(name = "tar_1/jiao.txt"))
# 如果name在歸檔中找到,則返回True <TarInfo 'tar_1/jiao.txt' at 0x1a74e3c5e80>
if tar.getmember(name="tar_1/jiao.txt"):
    print("找到了")
print("【將內(nèi)容清單打印到 sys.stdout】", tar.list())
"""
?rwxrwxrwx 0/0          0 2023-02-03 23:37:40 tar_1/ 
?rwxrwxrwx 0/0         15 2023-02-03 23:37:56 tar_1/jiao.txt 
"""
tar.extractall(path="./new_tar_file/")
# 當(dāng)前目錄下生成目錄 new_tar_file
tar.extract(member="tar_1/jiao.txt", path="./new_tar_file1/")
# 從歸檔中提取出一個成員放入指定目錄,默認(rèn)當(dāng)前目錄。大多數(shù)情況下使用 extractall()
print("【將歸檔中的一個成員提取為文件對象】", tar.extractfile(member="tar_1/jiao.txt"))
# 【將歸檔中的一個成員提取為文件對象】 <ExFileObject name='./tartest/tar_1.tar'>
# 將當(dāng)前目錄下的 jiao.txt 壓縮到指定目錄下的 tar 包,tar不存在則新建一個,存在,則替換里面的內(nèi)容
tar1 = tarfile.open(name="./tartest/tar_3.tar", mode="w|")
tar1.add(name="./jiao.txt")
tar1.close()  # 關(guān)閉 tarfile 對象
# 暫不清楚的
"""
tar.addfile() 將 TarInfo 對象 tarinfo 添加到歸檔
tar.gettarinfo()  基于 os.stat() 的結(jié)果或者現(xiàn)有文件的相同數(shù)據(jù)創(chuàng)建一個 TarInfo
"""

3、處理2中返回的 TarInfo 對象

TarInfo 對象代表 TarFile 中的一個文件,除了會存儲所有必要的文件屬性(例如文件類型、大小、時間、權(quán)限、所有者等),它還提供了一些確定文件類型的有用方法。 此對象 并不 包含文件數(shù)據(jù)本身(意思你拿不到txt文本里面的數(shù)據(jù))。

import tarfile
tar = tarfile.open("./tartest/tar_1.tar")
tarinfos = tar.getmembers()
for tarinfo in tarinfos:
    print("基于 TarInfo 對象創(chuàng)建一個字符串緩沖區(qū)", i.tobuf())
    print(tarinfo.name, "tar包成員的名稱")
    print(tarinfo.size, "tar包成員的大小")
    print(tarinfo.mtime, "上次修改的時間")
    print(tarinfo.mode, "權(quán)限位")
    print(tarinfo.type, "文件類型")
    print(tarinfo.linkname, "目標(biāo)文件名的名稱,該屬性僅在類型為 LNKTYPE 和 SYMTYPE 的 TarInfo 對象中存在")
    print(tarinfo.uid, tarinfo.gid, tarinfo.uname, tarinfo.gname)
    if tarinfo.isfile():
        print("如果 Tarinfo 對象為普通文件則返回 True")
    if tarinfo.isdir():
        print("如果為目錄則返回 True")
    if tarinfo.issym():
        print("如果為符號鏈接則返回 True")
    if tarinfo.islnk():
        print("如果為硬鏈接則返回 True")
    # 還有其他不常用的,不深入研究了

4、示例

如何將整個 tar 歸檔提取到當(dāng)前工作目

import tarfile
tar = tarfile.open("sample.tar.gz")
tar.extractall()
tar.close()

如何通過 TarFile.extractall() 使用生成器函數(shù)而非列表來提取一個 tar包成員的子集

import os
import tarfile
def py_files(members):
    for tarinfo in members:
    	# os.path.splitext(路徑) 用來分離文件名與拓展名
        if os.path.splitext(tarinfo.name)[1] == ".sql":
            yield tarinfo
tar = tarfile.open("sample.tar.gz")
tar.extractall(members=py_files(tar))
tar.close()

將一堆文件壓縮成tar包:

import tarfile
tar = tarfile.open("sample.tar", "w")
for name in ["foo.txt", "bar.txt", "quux.txt"]:
    tar.add(name)
tar.close()

使用 with 語句將一堆文件壓縮成tar包

import tarfile
with tarfile.open("sample.tar", "w") as tar:
    for name in ["foo", "bar", "quux"]:
        tar.add(name)

讀取一個 gzip 壓縮的 tar 包并顯示一些成員信息

import tarfile
tar = tarfile.open("sample.tar.gz", "r:gz")
for tarinfo in tar:
    print(tarinfo.name, "is", tarinfo.size, "bytes in size and is ", end="")
    if tarinfo.isreg():
        print("a regular file.")
    elif tarinfo.isdir():
        print("a directory.")
    else:
        print("something else.")
tar.close()

創(chuàng)建一個歸檔并使用 TarFile.add() 中的 filter 形參來重置用戶信息

import tarfile
def reset(tarinfo):
    tarinfo.uid = tarinfo.gid = 0
    tarinfo.uname = tarinfo.gname = "root"
    return tarinfo
tar = tarfile.open("sample.tar.gz", "w:gz")
tar.add("foo", filter=reset)
tar.close()

到此這篇關(guān)于python tarfile壓縮包操作保姆級教程的文章就介紹到這了,更多相關(guān)python tarfile內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)PowerPoint演示文稿到圖片的批量轉(zhuǎn)換

    Python實現(xiàn)PowerPoint演示文稿到圖片的批量轉(zhuǎn)換

    PowerPoint演示文稿作為展示創(chuàng)意、分享知識和表達觀點的重要工具,被廣泛應(yīng)用于教育、商務(wù)匯報及個人項目展示等領(lǐng)域,用Python代碼可以高效地實現(xiàn)PowerPoint演示文稿到圖片的批量轉(zhuǎn)換,從而提升工作效率,文本將介紹如何使用Python實現(xiàn)PowerPoint演示文稿到圖片的轉(zhuǎn)換
    2024-06-06
  • DRF之請求與響應(yīng)的實現(xiàn)

    DRF之請求與響應(yīng)的實現(xiàn)

    本文主要介紹了DRF請求與響應(yīng)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Python爬蟲爬取新聞資訊案例詳解

    Python爬蟲爬取新聞資訊案例詳解

    這篇文章主要介紹了Python爬蟲爬取新聞資訊案例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • pyqt5教程QGraphicsScene及QGraphicsView使用基礎(chǔ)

    pyqt5教程QGraphicsScene及QGraphicsView使用基礎(chǔ)

    這篇文章主要為大家介紹了pyqt5教程中QGraphicsScene及QGraphicsView使用基礎(chǔ),有序要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python基于opencv的簡單圖像輪廓形狀識別(全網(wǎng)最簡單最少代碼)

    Python基于opencv的簡單圖像輪廓形狀識別(全網(wǎng)最簡單最少代碼)

    這篇文章主要介紹了基于opencv的簡單圖像輪廓形狀識別(全網(wǎng)最簡單最少代碼),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python爬蟲中g(shù)et和post方法介紹以及cookie作用

    python爬蟲中g(shù)et和post方法介紹以及cookie作用

    本篇文章通過爬取163郵箱實例介紹了python爬蟲中g(shù)et和post方法介紹以及cookie作用,對此有興趣的朋友學(xué)習(xí)下。
    2018-02-02
  • 解決python列表list中的截取問題

    解決python列表list中的截取問題

    這篇文章主要介紹了解決python列表list中的截取問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python中的字典使用分享

    python中的字典使用分享

    Python 中的字典是Python中一個鍵值映射的數(shù)據(jù)結(jié)構(gòu),下面介紹一下如何操作字典,希望大家能夠喜歡
    2016-07-07
  • python測試框架unittest和pytest區(qū)別

    python測試框架unittest和pytest區(qū)別

    這篇文章主要介紹了python測試框架unittest和pytest區(qū)別,幫助大家更好的理解和學(xué)習(xí)使用python進行自動化測試,感興趣的朋友可以了解下
    2021-04-04
  • python中實現(xiàn)字符串翻轉(zhuǎn)的方法

    python中實現(xiàn)字符串翻轉(zhuǎn)的方法

    這篇文章主要介紹了python中實現(xiàn)字符串翻轉(zhuǎn)的方法,代碼很簡單,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07

最新評論