如何在Python 2.4中使用TarFile取消引用标志?

时间:2011-08-09 12:31:50

标签: python tar python-2.x

我编写了一个脚本,将所有日志文件收集到一个tar文件中。问题是它不包含软链接的数据。我试图使用dereference标志但是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 个答案:

答案 0 :(得分:3)

支持Python 2.4 docs dereference = True。自从Python 2.3中添加tarfile以来,它似乎得到了支持。

除非您使用非Posix系统(Windows),否则您必须做错了。发布您的代码以及dereference = True带来的错误,以便我们告诉您这是什么。

另外,通过软链接我假设您的意思是符号链接?因为这是dereference = True允许工作的原因。

编辑:我刚看了code for tarfile on Python 2.4不支持构造函数的dereference参数,但确实似乎具有实际取消引用所需的代码(针对source for Python 2.6进行了检查)。所以,

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

应该有效。请更新您的结果。

答案 1 :(得分:0)

您是否只能使用-T上的--files-fromtar选项?