2017-04-07 3 views
0

私はPythonを学習しており、一般的にプログラミングしていて、本当に助けが必要です。名前に基づいた別のリストのファイルと1つのリストのファイルを一致させるPython

私はpythonスクリプトを書いて、一意の値を取得し、二番目のファイルを開き、それらの一意の値を使用して計算します(スクリプトは長すぎます)。 私はpyqt4を使ってguiを作成しました。ユーザーがQPushButtonをクリックしてブラウズできるようにして、ファイルパスをQLineEditに保存しました。スクリプト内にファイルを設定してf1 = self.lineedit.text()f2 = self.lineedit2.text のようにすべてうまく機能しましたが、複数のファイルを選択して、対応するファイルは2つのファイルが互いに依存しているため、2つのファイルがあります。

ここでは、複数のファイルを受け入れるためにウィジェット関数に加えた更新があります。

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にファイルパスから開いて一つのファイルに、ユニークなアイテムをつかみ、私のファイル1と2場合は、リスト内のすべてのファイルに対して

を繰り返して、計算を実行するためにユニークなアイテムを使用しlistwidget_2にそのパスから同じ名前のファイルを見つけますどのように私はそれらを引っ張って一致させるのですか?

例ファイル1名: filemap02.csv filemap03.csv filemap04.csv

例は、二つの名前ファイル: newmap02.csv newmap03.csv newmap04.csv

答えて

0

は、だから私は「couldn実際の例を投稿していないので、実際にテストしてみましょう。しかし、次のようなものがあります。

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

関連する問題