如何在 Python 中创建没有子文件夹的 zip?
How to create zip without subfolders in Python?
我在 /tmp/1234/
中有一些文件,我正在使用 Python 创建一个 zip:
def create_local_zip_file(zipjob_number, folder_path):
zip_file_path = os.path.join('/tmp/', f'{zipjob_number}.zip')
with ZipFile(zip_file_path, 'w') as zip_obj:
for filename in glob.glob(os.path.join(folder_path, "*")):
zip_obj.write(filename)
return zip_file_path
这会创建一个 zip,但是当我解压缩创建的 zip 文件时,我得到一个名为 tmp
的文件夹,该文件夹又包含一个名为 1234
的文件夹,该文件夹随后包含文件。
我如何确保解压创建一个名为 1234
的文件夹直接包含文件?
您的每个文件名似乎都包含该文件夹,这就是将它们写入 zip 文件中目录的原因。
您可以使用“arcname”参数为存档中的文件指定不同的名称
我可以看到一种通过字符串拆分来执行此操作的方法,但是我可以建议改用 pathlib 吗?类似于:
from pathlib import Path
...
for file in Path(folder_path).glob("*"):
zip_obj.write(file, arcname=file.name)
...
我在 /tmp/1234/
中有一些文件,我正在使用 Python 创建一个 zip:
def create_local_zip_file(zipjob_number, folder_path):
zip_file_path = os.path.join('/tmp/', f'{zipjob_number}.zip')
with ZipFile(zip_file_path, 'w') as zip_obj:
for filename in glob.glob(os.path.join(folder_path, "*")):
zip_obj.write(filename)
return zip_file_path
这会创建一个 zip,但是当我解压缩创建的 zip 文件时,我得到一个名为 tmp
的文件夹,该文件夹又包含一个名为 1234
的文件夹,该文件夹随后包含文件。
我如何确保解压创建一个名为 1234
的文件夹直接包含文件?
您的每个文件名似乎都包含该文件夹,这就是将它们写入 zip 文件中目录的原因。
您可以使用“arcname”参数为存档中的文件指定不同的名称
我可以看到一种通过字符串拆分来执行此操作的方法,但是我可以建议改用 pathlib 吗?类似于:
from pathlib import Path
...
for file in Path(folder_path).glob("*"):
zip_obj.write(file, arcname=file.name)
...