如何在Python 2.4中使用TarFile反引用标志?
我写了一个脚本,可以把我们所有的日志文件收集到一个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
你难道不可以直接在tar
命令中使用--files-from
这个选项吗?
3
根据Python 2.4 的文档,dereference = True
是被支持的。看起来从 Python 2.3 开始,tarfile
就已经支持这个功能了。
除非你是在非 Posix 系统上(比如 Windows),否则你可能是用错了。请把你的代码和使用 dereference = True
时遇到的错误发出来,这样我们才能帮你找出问题所在。
另外,提到的软链接是指符号链接吗?因为 dereference = True
就是用来处理这个的。
补充一下:我刚刚查看了Python 2.4 中 tarfile 的代码。它不支持构造函数中的 dereference
参数,但似乎有必要的代码可以实际进行解引用(与Python 2.6 的源代码对比过)。所以,
import tarfile
tf = tarfile.TarFile('test.tar.gz', mode='w')
tf.dereference = True
应该可以正常工作。请更新你的结果。