LINUX.ORG.RU

Распаковка архивов в python 2.7 с non unicode путями

 , ,


0

3

Прошу совета, вообщем то есть tarfile, он отлично все распаковывает кроме тех моментов когда есть не юникод в архиве. Как я понял выходом является использование третьего питона, но может кто знает как побороть это во второй ветке. Или может подскажете какую другую либу которой я смогу нонюникод паковать/распаковать что бы при этом иметь возможность считать прогресс. Пока для получения прогресса пытаюсь использовать конструкцию как пишут в интернетах, но она не работает. Распаковка идет, прогресс идет только в аутпут на экране, в редис соответственно ничего не долетает:

        if self.archive_type() == 'tar.gz':
            cmd_string = "pv -n "+self.archive_file+" | tar xp -C "+self.target_directory
            cmd = subprocess.Popen(cmd_string, shell=True, stdout=subprocess.PIPE)
            while True:
                line = cmd.stdout.readline()
                if line != '':
                    self.redis_obj.publish('unpack', line.rstrip())
                else:
                    break

Так что нужно либо заставить постить прогресс то что есть, либо как то заставить tarfile работать с нонюникод, либо есть какая другая либа о которой я не знаю, и которая умеет и то и другое. Спасибо.



Последнее исправление: OxFF (всего исправлений: 1)

а, ты про него написал, извини

anonymous
()

он отлично все распаковывает кроме тех моментов когда есть не юникод в архиве

А какая там кодировка и что будет, если эту кодировку передать в параметре encoding конструктора tarfile.TarFile?

В целом да, некоторый недосмотр со стороны разрабов стандартной библиотеки: надо было как-то позволить использовать пути как есть, без перекодировки вообще.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

Да вроде нет параметра кодировки.

class tarfile.TarFile(name=None, mode='r', fileobj=None, format=DEFAULT_FORMAT, tarinfo=TarInfo, dereference=False, ignore_zeros=False, encoding=ENCODING, errors=None, pax_headers=None, debug=0, errorlevel=0)
OxFF
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.