强制转换为Unicode:需要字符串或缓冲区,TarFile找到

时间:2012-03-19 16:58:26

标签: python tar

我收到以下错误....

Traceback (most recent call last):
  File "deploycommerce.py", line 56, in <module>
    if tarfile.is_tarfile(optfile):
  File "/usr/lib/python2.7/tarfile.py", line 2587, in is_tarfile
    t = open(name)
  File "/usr/lib/python2.7/tarfile.py", line 1658, in open
    return func(name, "r", fileobj, **kwargs)
  File "/usr/lib/python2.7/tarfile.py", line 1720, in gzopen
    fileobj = bltn_open(name, mode + "b")
TypeError: coercing to Unicode: need string or buffer, TarFile found

当我试着去玩下面的时候......

optfile = tarfile.open(opt_tar_input,"r:gz")
# ERROR THROWN IN FOLLOWING...
if tarfile.is_tarfile(optfile):
    # extract all contents
    test =""

谢谢你们

2 个答案:

答案 0 :(得分:4)

tarfile.is_tarfile获取文件的名称,而不是文件对象。

如果您已成功调用tarfile.open,则路径指向tarfile。

请注意,通常的Python编码风格是

try:
    optfile = tarfile.open(...)
except tarfile.ReadError:
    # not a tarfile

这通常用口号“it's easier to ask forgiveness than permission”来概括。

答案 1 :(得分:0)

tarfile.is_tarfile采用文件名,而不是TarFile对象。无论如何,检查是多余的 - 如果它不是tar文件,tarfile.open会引发异常。