2017-04-07 1 views
0

저는 파이썬을 배우며 일반적으로 프로그래밍하고 있으며 실제로 도움이 필요합니다.파이썬은 한 목록의 파일을 다른 목록의 파일 이름과 일치시킵니다.

하나의 파일을 읽고, 고유 한 값을 얻으며, 두 번째 파일을 열고, 계산을하기 위해 고유 한 값을 사용하는 python 스크립트를 작성했습니다 (스크립트가 너무 길어서 업로드 할 수 없습니다). 그런 다음 pyqt4를 사용하여 GUI를 생성했습니다. 사용자가 QPushButton을 클릭하여 찾아 볼 수있게하고 QLineEdit에 파일 경로를 저장했습니다. 내 스크립트에서 내 파일을 f1 = self.lineedit.text()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에서 파일 경로에서

공개 한 파일은 계산을 수행하는 고유 항목을 사용 listwidget_2에서 해당 경로에서 같은 이름의 파일을 찾아 내 파일의 경우 목록

에서 모든 파일에 대해 반복 고유 항목을 잡아 하나, 둘, 그들의 이름에 같은 끈이있을 것입니다. 어떻게 그들을 끌어 당겨 일치시킬 수 있습니까?

예제 파일을 하나의 이름 : filemap02.csv filemap03.csv filemap04.csv

예는 두 개의 이름 파일 : newmap02.csv newmap03.csv newmap04.csv

답변

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) 

희망은 도움이됩니다.

+0

감사합니다. – MiguelA

관련 문제