使用python提取压缩文件(.7z)中文件的名称

问题描述 投票:0回答:2

我想知道压缩文件(7zip)中文件的名称而不提取该文件。我怎么能在python中这样做?

python compression 7zip
2个回答
1
投票

在Mac或Linux上,您可以使用libarchive。 (在Windows上,你可以尝试libarchive-c,但我从来没有尝试过)

这是一个粗略的例子,让你开始,虽然我建议你阅读链接

import libarchive.public

with libarchive.public.file_reader('test.7z') as e:
    for entry in e:
         print(e)

1
投票

另一个Linux示例,如果您只是编写一个快速脚本(不用担心来自不受信任的用户的变形文件名),您可以始终只遵循7z可执行文件(此代码假定您的文档支持未记录的-ba选项)

#!/usr/bin/python3
# this doesn't work for files with embedded newlines

import subprocess
import sys

pp = subprocess.run(
    [ '7z', 'l', '-ba', sys.argv[1] ] ,
    stdout = subprocess.PIPE ,
    stderr = subprocess.PIPE ,
)

pp.check_returncode()

for line in pp.stdout.split( b'\n' ):
    if line:
        sys.stdout.buffer.write( line[53:] )
        sys.stdout.buffer.write( b'\n' )
© www.soinside.com 2019 - 2024. All rights reserved.