Python 7z Pyunpack TypeError

时间:2016-03-14 20:09:36

标签: python compression typeerror 7zip

我在使用Pyunpack时遇到了一些麻烦。

变量thing是7z文件的路径。

from pyunpack import Archive
Archive(thing).extractall(str(thing[0:thing.rfind('/')]))

此代码旨在将7z文件解压缩到其目录。

在这种情况下,thing是一个相对路径: ./relative/path/my_7z_file.7z

这会返回一个模糊的TypeError:

Traceback (most recent call last):
  File "importItAll.py", line 33, in <module>
    Archive(thing).extractall(str(thing[0:thing.rfind('/')]))
  File "/usr/local/lib/python2.7/dist-packages/pyunpack/__init__.py", line 74, in extractall
    self.extractall_patool(directory, patool_path)
  File "/usr/local/lib/python2.7/dist-packages/pyunpack/__init__.py", line 41, in extractall_patool
    '--outdir=' + directory,
  File "/usr/local/lib/python2.7/dist-packages/easyprocess/__init__.py", line 108, in __init__
self.cmd_as_string = ' '.join(self.cmd)  # TODO: not perfect
TypeError: sequence item 1: expected string, NoneType found

1 个答案:

答案 0 :(得分:1)

查看pyunpack.Archive代码的代码。您似乎缺少库的patool依赖项。这似乎是pyunpack中的一个错误,它将为函数返回None,而不是给出可用的错误消息:

def _exepath(cmd): for p in os.environ['PATH'].split(os.pathsep): fullp = os.path.join(p, cmd) if os.access(fullp, os.X_OK): return fullp

这是python中没有返回的任何函数的默认行为。使用pip install patooleasy_install patool安装patool依赖项应解决此问题。