приведение к Unicode: нужна строка или буфер, найден TarFile - PullRequest
1 голос
/ 19 марта 2012

Я получаю следующую ошибку ....

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 ]

4 голосов
/ 19 марта 2012

tarfile.is_tarfile принимает имя файла, а не объект файла.

Если вы успешно вызвали tarfile.open, то путь указывает наtarfile.

Обратите внимание, что обычным стилем кодирования Python будет

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

Обычно это кратко выражено в слогане ", когда просить прощения легче, чем разрешение ".

0 голосов
/ 19 марта 2012

tarfile.is_tarfile принимает имя файла, а не TarFile объект.В любом случае проверка избыточна - если это не файл tar, tarfile.open вызовет исключение.

...