使用python tarfile添加时不对arcname应用normpath
我正在使用Python的tarfile库来创建一个gzipped的tar文件。
这个tar文件需要包含绝对路径名,原因我无法控制。(我知道这不是常规做法。)
当我调用
tarobject.add("/foo/xx1", "/bar/xx1")
时,arcname参数中的"/bar/xx1"会经过os.path.normpath()处理,变成了"bar/xx1"
我该如何避免这种情况,确保得到我需要的"/bar/xx1"呢?
我听说可以在某个地方替换掉normpath,但我对Python还比较陌生,不太确定该怎么做,或者这样做会有什么更广泛的影响。
编辑
在查看了这个问题后,我仔细研究了一下tarinfo对象,似乎这样做有效:
my_tarinfo = tarobject.gettarinfo("/foo/xx1")
my_tarinfo.name = "/bar/xx1"
tarobject.addfile(my_tarinfo, file("/foo/xx1"))
1 个回答
-1
你真是做了一些奇怪的事情。你需要把 /usr/lib64/python/tarfile.py
这个文件复制到你PYTHONPATH中的一个目录里。然后你就可以修改这个文件了。不过,你还需要把你自己的tarfile模块和你的代码打包在一起。