簡體   English   中英

Python-沒有父文件夾的Zipfile

[英]Python - Zipfile with no parent folder

我可以將文件壓縮為單個zip文件,但是當我打開zip文件時,內容始終包含一個“父文件夾”,該名稱與zip文件itslef的名稱相同。

我只是試圖創建一個不包含任何文件夾的zip文件。

當前:abc.zip> abc(文件夾)>文件

尋找:abc.zip>文件

def create_zip(file_name, file_dir):
    """
    Function to create zip archive
    """
    os.chdir(file_dir)
    zipfiles_list = ['csv', 'txt']
    file_name_part = file_name
    zip_name = '{0}.zip'.format(file_name_part)
    with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as 
    zip_archive:
        for file_extension in zipfile_list:
            full_file_path = '{0}.{1}'.format(file_name_part, file_extension)
            zip_archive.write(full_file_path, basename(full_file_path))

這可能嗎? 我已經看到,如果在創建zip文件后重命名它,它仍會將內容提取到與zip文件名匹配的文件夾中。

原始zip解壓縮到abc文件夾

重命名相同的zip,並將內容提取到具有新名稱的文件夾

在您的代碼中,您for file_extension in zipfile_list:了“ zipfiles ”:錯誤(最后沒有“ s”)。

它必須是for file_extension in zipfiles_list:

比起我在Win7x86中運行您的代碼-可以,沒有內部文件夾(python 3.6.6)。

在Win 10x64上嘗試過-相同。

Xubuntu 18.04 x64-相同,沒有文件夾。

這是我的腳本:

from os.path import basename 
from os import path
import os
import zipfile

# current directory
script_dir = path.dirname(path.abspath(__file__))

def create_zip(file_name, file_dir):
    """
    Function to create zip archive
    """
    os.chdir(file_dir)
    zipfiles_list = ['csv', 'txt']
    file_name_part = file_name
    zip_name = '{0}.zip'.format(file_name_part)
    with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as zip_archive:
        for file_extension in zipfiles_list:
            full_file_path = '{0}.{1}'.format(file_name_part, file_extension)
            zip_archive.write(full_file_path, basename(full_file_path))

create_zip("first", script_dir)

在包含腳本的目錄中,有兩個文件:first.txt和first.csv。 運行此腳本后,我確實擁有一個zip文件first.zip,其中包含兩個文件:first.txt和first.csv。

暫無
暫無

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

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