簡體   English   中英

Python 創建的 tar.gz 文件包含“_”文件夾,如何刪除?

[英]Python created tar.gz file contains “_” folder, how to remove?

我通過 Python 創建的 .tar.gz 文件包含我需要刪除的“_”根級文件夾。

這是我正在使用的.tar.gz function:

def make_tarfile(output_filename, source_dir):
    with tarfile.open(output_filename, "w:gz") as tar:
        tar.add(source_dir, arcname='')

我創建了.tar.gz: make_tarfile('ARCHIVE.tar.gz', 'C:\FolderA')

如您所見,在.tar.gz 中添加了一個“_”文件夾。 關於如何刪除它的任何建議? 有趣的是,當我解壓 .tar.gz 時,“_”文件夾沒有出現。 從這個意義上說,這很好。 但這將是許多用戶使用的 a.tar.gz,所以我希望它不包含這樣的怪癖。

您在 7z 界面中看到的是它添加到每個目錄的..條目,以便您可以通過單擊它向上導航。 它在 tar 存檔中不存在。

考慮以下:

def make_tarfile(output_filename, source_dir):
    with tarfile.open(output_filename, "w:gz") as tar:
        for name in os.listdir(source_dir):
            tar.add(os.path.join(source_dir, name), arcname=name)

當調用make_tarfile('ARCHIVE.tar.gz', 'FolderA')其中FolderA是:

FolderA/
|-- FolderB
|   `-- example
`-- example

生成包含以下內容的存檔:

example
FolderB/
FolderB/example

現在我不喜歡這樣,因為我更喜歡將 tar 文件提取到頂級目錄中。 因為它們是使用tar -czf ARCHIVE.tar.gz FolderA/創建的,並且具有以下條目:

FolderA/
FolderA/example
FolderA/FolderB/
FolderA/FolderB/example

萬一有人遇到這種情況——使用 7Zip CLI 並復制所需文件夾的所有內容(父文件夾將被省略)。 像這樣:

subprocess.call(['C:\Program Files\\7-Zip\\7z.exe', 'a', '-ttar', 'C:\ARCHIVE.tar', 'C:\FolderA\*'])
subprocess.call(['C:\Program Files\\7-Zip\\7z.exe', 'a', '-tgzip', 'C:\ARCHIVE.tar.gz', 'C:\ARCHIVE.tar'])

存檔中也沒有“_”文件夾,它會很干凈:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM