Использовать Python tarfile add без применения normpath к arcname - PullRequest
1 голос
/ 05 сентября 2011

Я использую библиотеку tar-файлов python для создания tar-файла в формате gzip.

Файл tar должен иметь абсолютные имена путей по причинам, которые я не могу контролировать.(Я знаю, что это не нормальная практика.)

Когда я вызываю

tarobject.add("/foo/xx1", "/bar/xx1")

аргумент имени дуги "/ bar / xx1" запускается через os.path.normpath () и преобразован в "bar / xx1"

Как мне избежать этого и получить "/ bar / xx1", как мне требуется?

Я читал, что могу где-нибудь заменить normpath, но я довольно плохо знаком с Python и не уверен, как это сделать или каковы будут более широкие последствия.

edit

Посмотрев на этот вопрос Я более внимательно посмотрел на объект tarinfo, и, похоже, это работает:

my_tarinfo = tarobject.gettarinfo("/foo/xx1")
my_tarinfo.name = "/bar/xx1"
tarobject.addfile(my_tarinfo, file("/foo/xx1"))    

1 Ответ

0 голосов
/ 05 сентября 2011

Вы действительно делаете странные вещи. Вам нужно скопировать /usr/lib64/python/tarfile.py в каталог вашей PYTHONPATH. Затем вы можете изменить этот файл. Но вам нужно связать свой собственный модуль tarfile с вашим кодом.

...