使用python tarfile add而不将normpath应用于arcname

时间:2011-09-05 13:11:26

标签: python tar

我正在使用python的tarfile库来创建一个gzip压缩文件。

tar文件需要具有绝对路径名,原因是我无法控制。 (我知道这不是正常做法。)

当我打电话

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

arcname参数“/ bar / xx1”通过os.path.normpath()运行并转换为“bar / xx1”

如何避免这种情况并按照我的要求结束“/ bar / xx1”?

我读过我可以在某处替换normpath,但我对Python很新,我不知道如何做到这一点或者更广泛的含义是什么。

修改

在查看at this question后,我仔细查看了tarinfo对象,这似乎有效:

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

1 个答案:

答案 0 :(得分:0)

你真的做了很奇怪的事情。您需要将/usr/lib64/python/tarfile.py复制到PYTHONPATH中的目录。然后你可以修改这个文件。但是您需要将自己的tarfile模块与您的代码捆绑在一起。