2016-11-02 4 views
0

2つのファイルの違いをチェックするクイックファイル比較ツールを作成しました。私は突然、違いが発生する行番号が必要になることに気付きました。いずれにしても、次のコードにどのように組み込むべきかに関するヒントはありますか?Pythonのテキストファイルから行番号を取得する方法に関するヒントは?

def fileCompare(): 
    systemList=os.listdir("S:\\Automation_Results") 
    for system in systemList: 
     resFilesList=os.listdir("S:\\Automation_Results\\"+system) 
     for resFile in resFilesList: 
      if os.path.isfile("S:\\KnownGoodOutput\\"+resFile)==True: 
       with open("S:\\KnownGoodOutput\\"+str(resFile)) as kFile: 
        kSet=set(kFile) 
        with open("S:\\Automation_Results\\"+str(system)+"\\"+str(resFile)) as tFile, open("S:\\FC_Result_Files\\Compare_Results for"+str(system)+".txt","w") as fcFile: 
         fcFile.writelines(line for line in tFile if line not in kSet) 

私はおそらくラインが読まれるとカウンタをインクリメントする必要があります考えていますが、私は私が間違っている願っていますけれども、私はそれのための私の比較方法をやり直す必要があるだろうと信じていた私はむしろ、この方法など。 ..本当にうまくいった。

リンクされたものと私の質問が重複しているのはわかりません。ここでは、2つの比較されたファイルの間で不一致が発生した場合に、ファイル内に行番号を取得しています。リンクでは、ファイル内の行番号を取得するだけです。はい、答えの中には列挙を使用するものがありますが、この方法ではありません。私がちょうどラインを数えたいなら...まあ...私は尋ねていないでしょう。 This linkは、私がやっていることと共通していますが、それを検索している別のトピックでは、それはまったくありそうもなく、全く異なるユースケースです。

+0

私は、これはだまされやすい人 – Ranveer

答えて

0

私はこのような何かが動作するはずだと思う:

fcFile.writelines('{}: {}'.format(line_number, line) 
        for line_number, line in enumerate(tFile) 
        if line not in kSet) 
+0

ああ...私は完全に忘れてしまっについて列挙し...私の防衛ファイル操作で何ありませんがあるとは思いません私は通常Pythonを使用しています。今後の視聴者にとっては、列挙の開始を設定したいと思うかもしれません...私の場合、変更する必要があります...列挙する(tFile、開始= 1)そうでなければ、私の行番号は1つだけになります。ありがとう、百万円 –

+0

他に何かこれが出てきました。私はline_numberの値を取得する必要があります。私はそれが他の場所で変数を使用したいと思う。私は結果ファイルが比較されているファイルの行を印刷するために、このファイルを使用しようとしています。私はファイルをリストに入れて、次に私は試しています:fcFile.writelines( '{}:{}'。format(line_number、line、kLines [line_number])...そして、出力ファイルに完全に正常に出力されても、line_numberは明らかに値を持たない。 –

+0

@VagrantStorm新しい質問をしてあなたの現在のコードを組み込む。 – smarx

関連する問題