Python我用子文件夹压缩了一些文件夹,但它压缩了两次。

2024-09-27 21:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个剧本。它找到当前路径并更改路径和拉链。然后我想它只是找到zip文件复制到另一个目录,并在最后删除文件夹的内容。但它会一次又一次地压缩整个文件夹和zip文件。初始情况如图1所示。 Initial directroy-tree

脚本如下:

import os
import zipfile
import shutil
import glob

Pfad = os.getcwd()
newPfad = 'D'+ Pfad[1:]
Zip_name=os.path.basename(os.path.normpath(Pfad))
shutil.make_archive(Zip_name, 'zip', Pfad)

if not os.path.exists(newPfad):
    os.makedirs(newPfad)

dest_dir=newPfad
files = glob.iglob(os.path.join(Pfad, "*.zip"))
for file in files:
    if os.path.isfile(file):
        shutil.copy2(file, dest_dir)

shutil.rmtree(Pfad)

最后结果如下图所示

After Execution

批处理文件仅用于运行python脚本

我怎样才能得到下面想要的情况

enter image description here


Tags: 文件pathimport路径脚本文件夹os情况
1条回答
网友
1楼 · 发布于 2024-09-27 21:24:30

问题是zip文件是在列出目录内容之前创建的,因此空的zip文件被添加到目录中。在父目录中创建存档,然后将其移动。移动文件或目录既便宜又原子

import os
import shutil

cwd = os.path.abspath(os.path.curdir)
zip_target = os.path.join(cwd, os.path.basename(cwd)) + '.zip'
zip_source = shutil.make_archive(cwd, 'zip')
os.rename(zip_source, zip_target)

相关问题 更多 >

    热门问题