逻辑python问题处理目录和其中的文件

2024-03-29 05:46:11 发布

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

我使用此函数从.zip存档中提取文件并将其存储在服务器上:

def unzip_file_into_dir(file, dir):
    import sys, zipfile, os, os.path

    os.makedirs(dir, 0777)
    zfobj = zipfile.ZipFile(file)
    for name in zfobj.namelist():
        if name.endswith('/'):
            os.mkdir(os.path.join(dir, name))
        else:
            outfile = open(os.path.join(dir, name), 'wb')
            outfile.write(zfobj.read(name))
            outfile.close()

以及用法:

unzip_file_into_dir('/var/zips/somearchive.zip', '/var/www/extracted_zip')

你知道吗somearchive.zip文件具有以下结构:

somearchive.zip
    1.jpeg
    2.jpeg
    another.jpeg

或者,有时,这个:

somearchive.zip
    somedir/
        1.jpeg
        2.jpeg
        another.jpeg

问题是:如何修改我的函数,使我的extracted_zip目录始终只包含图像,而不是另一个子目录中的图像,即使图像存储在存档中的somedir中。


Tags: 文件path函数name图像osdirzip
1条回答
网友
1楼 · 发布于 2024-03-29 05:46:11

使用

outfile = open(os.path.join(dir, os.path.basename(name)), 'wb')

从ZIP条目的名称中删除路径。这样,只剩下文件名,就不会得到任何目录。您还必须注释掉os.mkdir()或将其替换为pass。你知道吗

相关问题 更多 >