Python 7z Pyunpack 类型错误

Python 7z Pyunpack TypeError

我在使用 Pyunpack 时遇到了一些问题。

变量thing是7z文件的路径

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

此代码旨在将 7z 文件提取到其目录中。

在本例中,thing是一个相对路径: ./relative/path/my_7z_file.7z

这 returns 一个模糊的 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

查看库的 pyunpack.Archive code. It would appear you are missing the patool 依赖项的代码。这似乎是 pyunpack 中的一个错误,它将 return 一个 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 中没有 return 的任何函数的默认行为。使用 pip install patooleasy_install patool 安装 patool 依赖项应该可以解决问题。