2017-06-20 3 views
0

ich eine Datei mit folgendem Blick haben:Python: Erstellen von Stücken von Dateien basierend auf der Anzahl der Zeilen

ID Num1 Num2 
1 1 2 
1 2 4 
1 3 6 
2 4 8 
2 5 10 
3 6 12 
3 7 14 
3 8 16 
3 9 18 
4 10 20 
5 11 22 
5 12 24 

Ich möchte unter der Bedingung, um die Datei in mehrere Dateien basierend aufzuteilen, dass jede Datei nicht mehr enthalten sollte als 3 ID-Werte. Also, in diesem Fall werden ihre zwei Ausgabedateien. 1. Datei sollte die Ausgabe haben:

1 1 2 
1 2 4 
1 3 6 
2 4 8 
2 5 10 
3 6 12 
3 7 14 
3 8 16 
3 9 18 

Während die zweite Datei sollte wie folgt aussehen:

4 10 20 
5 11 22 
5 12 24 

Aber anstatt es erzeugt, drei Dateien mit der zweiten Datei als eine leere Datei und dritte Datei enthält Werte von nur ID = 5.

folgender Code ist in Python geschrieben:

infile=open("Input.txt","r") 
outfile=open("Output1.txt","w") 

list_value=[] # Storing the values of 1st column 
file=2 # Naming the file 
value="" # 1st column value 
for line in infile: 
    value=line.split()[0] 
    if value in list_value: 
     outfile.write(line) 
    else: 
     list_value.append(value) 
     if (len(list_value)) < 4: 
      outfile.write(line) 
     elif (len(list_value))==4: 
      outfile=open("Output"+str(file)+".txt","w") 
      outfile.write(line) 
      file=file+1 
      list_value=[] 

Der Code funktioniert prima nur für die ersten Sequenzen, aber nicht am Ende zu arbeiten.

Alle Befehle für Linux können auch hilfreich sein.

Danke!

+0

Sie annehmen, dass die IDs in der Eingabedatei sortiert sind? – Shai

+1

Sie sollten Ihre Dateien richtig '.close() '. –

+0

Ja IDs sind in der Datei sortiert. – AsmaTahir

Antwort

1

letzte Zeile im Code sollte

list_value = [value] 

anstelle von

list_value = [] 

da die Datei, die Sie in der elif Klausel öffnen bereits enthält ID value.

+1

Es hat funktioniert. Danke! – AsmaTahir

Verwandte Themen