Извлечение имени файла в сжатый файл (.7z) с использованием Python - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу знать имена файлов внутри сжатого файла (7zip) без извлечения этого файла. Как я могу сделать это в Python?

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Другой пример 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' )
1 голос
/ 30 апреля 2019

На Mac или Linux вы можете использовать libarchive .(В Windows вы можете попробовать libarchive-c , но я никогда не пробовал)

Вот грубый пример для начала, хотя я предлагаю вам прочитать ссылку

import libarchive.public

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