2017-01-20 5 views
1

저는 PyQt4에서 프로그램을 만들고 있는데, 여러 텍스트 파일에서 데이터를 가져와야합니다. 나는 파일을 선택하는 버튼이 있습니다 : 그것은 버튼이 내가 필요로하는 텍스트 파일을 선택할 수 있습니다 누르면 코드가PyQt에서 파일 읽기

qtCreatorFile = 'parser.ui' 

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile) 

class MyApp(QtGui.QMainWindow, Ui_MainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 
     Ui_MainWindow.__init__(self) 
     self.setupUi(self) 

     self.file_selector.clicked.connect(self.File_Selector) 

     self.log 

    def File_Selector(self): 
     files_list = [] 
     filenames = str(QFileDialog.getOpenFileNames(self, "Select File", "", "*.txt")) 
     self.log.insertPlainText('Loading files ' + '\n') 
     self.log.insertPlainText(filenames + '\n') 

if __name__ == "__main__": 
     app = QtGui.QApplication(sys.argv) 
     window = MyApp() 
     window.show() 
     sys.exit(app.exec_()) 

되는,하지만 난 그들을 읽을 수 아니에요입니까? 나는 QStringList object이 읽을 수 있도록 어떻게

text = open(filenames).read() 
    self.log.insertPlainText(text) 

을하지만 그 때문에 IOError: [Errno 22] invalid mode ('r') or filename: '<PyQt4.QtCore.QStringList object at 0x0000000002F00BA8>을 제공 : 내가 로그에 파일 이름을 인쇄 할 요청할 때 나는 또한 시도 <PyQt4.QtCore.QStringList object at 0x0000000002BD0BA8>

나에게 준다?

답변

1

QtGui.QFileDialog.getOpenFileNames(...)은 문자열 목록을 반환하므로 열 수 없으며 하나씩로드해야합니다.

def File_Selector(self): 
    filenames = QtGui.QFileDialog.getOpenFileNames(self, "Select File", "", "*.txt") 
    self.log.insertPlainText('Loading files ' + '\n') 
    self.log.insertPlainText(str(filenames) + '\n') 
    for filename in filenames: 
     text = open(filename).read() 
     self.log.insertPlainText(text) 
+0

Ahh okay. 따라서 여러 파일을로드하려면 파일 경로를 가져 와서 프로그램의 다른 부분으로 전달하거나 디렉토리를 선택해야합니까? – Charlietrypsin