与Pyside Qtgui解压缩时出错

时间:2014-01-28 01:03:43

标签: python-3.x pyside qtgui

当我运行程序时,我收到以下错误,并且不确定如何纠正它。有人可以帮助解释这个错误是什么以及如何纠正它? Newb在这里,所以细节表示赞赏。感谢您提前的时间!

代码:

#!/usr/bin/python
import zipfile
from PySide import QtGui
import re

#Select file to extract
app = QtGui.QApplication([])
dialog = QtGui.QFileDialog()
dialog.setFileMode(QtGui.QFileDialog.AnyFile)
if (dialog.exec()):
     fileName = dialog.selectedFiles()


#Select Directory to extract to
dialog = QtGui.QFileDialog()
dialog.setFileMode(QtGui.QFileDialog.Directory)
dialog.setOption(QtGui.QFileDialog.ShowDirsOnly)
if (dialog.exec()):
     dirName = dialog.selectedFiles()

print("Extracting.....")
zFile= zipfile.ZipFile(fileName)
zFile.extractall(dirName)

错误输出:

Traceback (most recent call last):
  File "C:\Users\Jennifer\Documents\BatchScripts\unzip.py", line 22, in <module>

    zFile= zipfile.ZipFile(fileName)
  File "C:\Python33\lib\zipfile.py", line 933, in __init__
    self._RealGetContents()
  File "C:\Python33\lib\zipfile.py", line 970, in _RealGetContents
    endrec = _EndRecData(fp)
  File "C:\Python33\lib\zipfile.py", line 237, in _EndRecData
    fpin.seek(0, 2)
AttributeError: 'list' object has no attribute 'seek'

1 个答案:

答案 0 :(得分:2)

在您的文件和目标目录代码块中,dialog.selectedFiles() returns a listzipfile.ZipFile一次只能处理一个文件,因此您的错误。要迭代dialog.selectedFiles()提供的列表,请使用以下命令:

for archive in fileName: # you should probably change it to fileNames to reflect its true nature
    zfile = zipfile.ZipFile(archive)
    print("Extracting " + str(zfile.filename) + "...")
    zfile.extractall(dirName[0]) # also a list, extract to first item and ignore rest

你应该全力以赴。