Python 用原始时间戳提取tar文件

Python 用原始时间戳提取tar文件,python,Python,我的目标是使用python 2.6将具有原始时间戳的归档文件成员提取到不同的位置 例如: tar -tzvf nas_archive_11-15-12.tgz -rw-r--r-- appins/app 2337 2012-11-15 10:25:09 nfs4exports/opt/prod/fmac/files/inbound/test_archive/a.txt.gpg 我想将上述文件恢复为“/nfs4exports/opt/prod/fmac/files/inbound/tes

我的目标是使用python 2.6将具有原始时间戳的归档文件成员提取到不同的位置

例如:

tar -tzvf nas_archive_11-15-12.tgz
-rw-r--r-- appins/app     2337 2012-11-15 10:25:09 nfs4exports/opt/prod/fmac/files/inbound/test_archive/a.txt.gpg
我想将上述文件恢复为“/nfs4exports/opt/prod/fmac/files/inbound/test_archive/11-15-12/a.txt.gpg”,因为它上次修改是在2012年11月15日

我创建了以下脚本:

#!/usr/bin/python

import os, tarfile
from datetime import datetime, date, timedelta
import datetime

a_path = '/home/appins/.scripts/'

for root, subFolders, files in os.walk(a_path):
        for file in files:
           if file.startswith("nas_archive"):
                print file, " is getting extracted"
                mytar = tarfile.open(file)
                for member in mytar.getmembers():
                    if member.isreg():
                        myname = '/' + member.name
                        path_list = myname.rsplit('/')[1:]
                        print path_list
                        member.name = os.path.basename(member.name)
                        i_base = 'inbound'
                        i = -1
                        for index,value in enumerate(path_list):
                            if value == i_base:
                                i = index
                                break
                        if i == -1:
                            print i_base, " not found"
                        else:
                            path_list.insert(index + 2, '11-15-12')
                            path_list.remove(member.name)
                        print path_list
                        newpath = '/' +  os.path.join(*path_list)
                        print newpath
                        mytar.extract(member,newpath)
此脚本按预期工作,但它使用今天的时间戳而不是原始时间戳来提取文件。在这里,我将无法使用extractall方法,因为我将根据每个文件的原始路径分别计算其路径。我有没有办法用原始时间戳将文件恢复到新位置?

您需要查看
TarInfo
对象:

import tarfile
tar = tarfile.open('tarfile.tar')
for member in tar.getmembers():
    print member.name, member.mtime
给定
mtime
值,您可以使用设置访问和修改时间戳,因此:

import os
os.utime('file', (mtime, mtime))

正是我想要的:-)。