Как использовать флаг разыменования TarFile в Python 2.4? - PullRequest
2 голосов
/ 09 августа 2011

Я написал скрипт, который собирает все наши файлы журнала в один файл tar.Проблема в том, что он не содержит данных мягкой ссылки.Я попытался использовать флаг разыменования, но он не распознается для Python 2.4.3.

Я не могу использовать командную строку, так как есть ограничение длины, и я хочу поддерживать много файлов журнала.

user ~/Desktop]$python
Python 2.4.3 (#1, Jun 11 2009, 14:09:37)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2

>>> import tarfile
>>> tarfile.TarFile('test.tar.gz', mode='w', dereference=True)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: __init__() got an unexpected keyword argument 'dereference'
>>>

Ответы [ 2 ]

3 голосов
/ 09 августа 2011

В соответствии с Python 2.4 документы dereference = True поддерживается. Похоже, что он поддерживается с тех пор, как tarfile был добавлен в Python 2.3.

Если вы не используете систему, отличную от Posix (Windows), вы должны делать это неправильно. Опубликуйте свой код и ошибку, которую вы получите с помощью dereference = True, чтобы мы могли сказать вам, что это такое.

Кроме того, под мягкими ссылками я предполагаю, что вы имеете в виду символические ссылки? Потому что это то, что dereference = True позволяет работать.

Редактировать: Я только что посмотрел код для tarfile на Python 2.4 . Он не поддерживает параметр dereference для конструктора, но он действительно , похоже, имеет необходимый код для фактического разыменования (Проверено по источнику для Python 2.6 ). Итак,

import tarfile
tf = tarfile.TarFile('test.tar.gz', mode='w')
tf.dereference = True

должно работать. Пожалуйста, обновите свои результаты.

0 голосов
/ 09 августа 2011

Не могли бы вы просто использовать опцию -T или --files-from на tar?

...