我在使用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
答案 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 patool
或easy_install patool
安装patool依赖项应解决此问题。