2016-12-16 16 views
0

私はPythonスクリプトを使って複数のテーブルを比較しようとしています。実際の比較は動作しており、printステートメントでテストされていますが、.txtファイルへの書き込みはありません。私は私の構文に誤りがあるかもしれないと信じていますが、Pythonには比較的新しいですが、私はそれを見つけることができません。sqlファイルを比較するときに.txtファイルとの比較を書く

for num in range(0, 4): #runs through the database array and compares the files in each folder 
    comp_var = directory + server_number[size] + databases[num] 
    for file in os.listdir(comp_var):  
     for num1 in os.listdir(master + databases[num]): 
      var = master + databases[num] + "\\" + os.listdir(master + databases[num])[size] 
      for line in open(var, 'r'): 
       for line2 in open(comp_var + "\\" + file, 'r'): 
        same = set(line).intersection(line2) 
        print(same) 
       same.discard('\n') 
      with open('results.txt', 'w') as file_out: 
       for line1 in same: 
        file_out.write(line1) 
      size = size + 1 
      comp_var = directory + server_number[size] + databases[num]    
     size = 0 
+0

あなたは何が起こっているのか記述できますか?エラーメッセージが表示されますか?ファイルはまったく作成されていますか? – EventHorizon

+0

@Dagファイルが作成されたとき、見つからない別のフォルダ内のファイルに到達するときを除いて、エラーメッセージは表示されません。それ以外の場合は、行ごとに書いてください。 – Sculler

答えて

0

問題は、openを呼び出すたびに新しいファイルを作成することです。ファイルに追加するには 'a'を使用する必要があります。これはおそらくあなたが望むものです。

+0

また、最も外側のループの外側にある "w"モードでファイルを開く方が良いです... –

+0

私がDulguunに言ったように、それは動作していません – Sculler

+0

出力を印刷してみてくださいデバッグの手段としてファイルに書き込んでいます。これは、line1を印刷することを意味します。さらに、その意図は間違っているようです。 –

0

results.txtを上書きしています。

with open('results.txt', 'w') as file_out:

に変更し、それを:Python documentationから

with open('results.txt', 'a') as file_out:

'w'のみ(同じ名前の既存のファイルが消去されます)の書き込み、および'a'について追加するファイルを開きます。ファイルに書き込まれたデータは自動的に最後に追加されます。

+0

それはまだ完全に正直であるようには働いていません。 – Sculler