python将一个列表中的文件与基于名称的另一个列表中的文件进行匹配

时间:2017-04-07 04:32:23

标签: python-2.7 pyqt4

我正在学习python和编程,并且确实需要一些帮助。

我编写了一个python脚本,它读取一个文件,获取唯一值,打开第二个文件并使用这些唯一值进行一些计算(脚本上传时间太长) 然后我使用pyqt4创建了一个gui,我允许用户通过单击QPushButton进行浏览并将文件路径存储在QLineEdit中,然后在我的脚本中将文件设置为f1 = self.lineedit.text()和{{1 }} 但是,一切都运行得很完美,我需要允许用户选择多个文件并将每个文件与其对应的文件匹配,因为它们彼此依赖

以下是我对小部件功能所做的更新以接受多个文件:

f2 = self.lineedit2.text

我仍然希望使用我编写的代码,但这次使用的是多个文件。

例如。

def first_file_set(self): dlg = QFileDialog() files = dlg.getOpenFileNames() self.listWidget.addItems(list(files)) def second_file_set(self): dlg = QFileDialog() filenames = dlg.getOpenFileNames() self.listWidget_2.addItems(list(filenames)) def clearF(self): for item in self.listwidget2.selectedItems(): self.listWidget.clear() def clearS(self): for item in self.listwidget.selectedItems(): self.listWidget_2.clear() def Calculate(self): #code is too long this is how I am reading files l1 = [] f1 = self.listWidget.item() with open(f1,'r') as csvfile: csvreader = csv.reader(csvfile) for line in csvreader: l1.append(list(line)) # more code l2 = [] f2 = self.listWidget_2.item()[0] with open(f2,'r') as csvfile: csvreader = csv.reader(csvfile) for line in csvreader: l2.append(list(line)) # more code 中的文件路径打开一个文件,获取唯一项,从listwidget中的路径中查找具有相同名称的文件,使用唯一项执行计算,对列表中的每个文件重复

如果我的文件一和二在名称中有相同的字符串,我该如何拉和匹配它们?

示例文件名称: filemap02.csv filemap03.csv filemap04.csv

示例文件两个名称: newmap02.csv newmap03.csv newmap04.csv

1 个答案:

答案 0 :(得分:0)

所以我没有真正测试它,因为你没有发布一个有效的例子,但是这样的事情应该这样做:

for item in self.listwidget.selectedItems():
    #First file
    fn1=str(item.text())

    #Get string that needs to match
    matchStr=fn1.replace("file","")

    #Find matching item in second listwidget    
    fn2=self.listwidget2.findItems(matchStr,QtCore.Qt.MatchExactly)

    # Do your calculations 
    whateverFunc(fn1,fn2)

希望有所帮助。