Python 属性错误:';TarFile';对象没有属性';结束于';

Python 属性错误:';TarFile';对象没有属性';结束于';,python,Python,我已经在论坛上搜索了这种错误,但是没有找到任何错误,所以我正在为它创建新的线程。我正在用一个低于python的脚本归档一年前的文件 import os, time, tarfile path = "/home/appins/.scripts/test/" now = time.time() yearago = now - 60*60*24*665 tar_file = "nas_archive_"+time.strftime("%m-%d-%Y")+".tgz" tar = tarfile.op

我已经在论坛上搜索了这种错误,但是没有找到任何错误,所以我正在为它创建新的线程。我正在用一个低于python的脚本归档一年前的文件

import os, time, tarfile
path = "/home/appins/.scripts/test/"
now = time.time()
yearago = now - 60*60*24*665
tar_file = "nas_archive_"+time.strftime("%m-%d-%Y")+".tgz"
tar = tarfile.open(tar_file,"w:gz")
for root, subFolders, files in os.walk(path):
    for file in files:
        file = os.path.join(root,file)
        file = os.path.join(path, file)
        filecreation = os.path.getctime(file)
        if filecreation > yearago:
            tar.add(file)
            print file," is older that one year"
            os.remove(file)
它工作得非常好,我可以通过查看它的内容。现在,当我尝试还原存档文件并获取错误AttributeError时:“TarFile”对象没有属性“endswith”

我的还原脚本很简单:

import os, tarfile
archive_file = "nas_archive_07-31-2013.tgz"
tar = tarfile.open("nas_archive_07-31-2013.tgz")
tar.extractall(tar)
tar.close()
运行此脚本时,出现以下错误:

python restore_archive.py
Traceback (most recent call last):
  File "restore_archive.py", line 8, in ?
    tar.extractall(tar)
  File "/usr/lib64/python2.4/tarfile.py", line 1541, in extractall
    self.extract(tarinfo, path)
  File "/usr/lib64/python2.4/tarfile.py", line 1578, in extract
    self._extract_member(tarinfo, os.path.join(path, tarinfo.name))
  File "/usr/lib64/python2.4/posixpath.py", line 62, in join
    elif path == '' or path.endswith('/'):
AttributeError: 'TarFile' object has no attribute 'endswith'

我在提取过程中有什么做错了吗?我可以使用tar-xzvf命令提取文件。

提取所有文件的方法采用提取路径。我不知道为什么要将tar文件对象传递给它;您应该可以不使用path参数,将其默认设置为当前目录。

方法提取所有路径。我不知道为什么要将tar文件对象传递给它;您应该可以不使用path参数,将其默认设置为当前目录。

在[96]:help(tarfile.tarfile.extractall)中
关于模块文件中函数extractall的帮助:
extractall(self,path='.',members=None)
将存档中的所有成员提取到当前工作区
目录,并在上设置所有者、修改时间和权限
以后再看目录`“路径”指定不同的目录
榨取`“成员”是可选的,必须是
getmembers()返回的列表。
(完)
因此,
extractall
需要一个路径(
str
object)作为第一个参数。

In[96]:help(tarfile.tarfile.extractall)
关于模块文件中函数extractall的帮助:
extractall(self,path='.',members=None)
将存档中的所有成员提取到当前工作区
目录,并在上设置所有者、修改时间和权限
以后再看目录`“路径”指定不同的目录
榨取`“成员”是可选的,必须是
getmembers()返回的列表。
(完)

因此,
extractall
需要一个路径(
str
object)作为第一个参数。

感谢您指出错误。正是它导致了错误。谢谢你指出了错误。这就是导致错误的原因。我从extractall中删除了tar文件对象,它现在正在工作。我从extractall中删除了tar文件对象,它现在正在工作。