Ich benutze Python 2.7, nur mit Standard-Modulen.Alle Listenelemente ändern sich zu angehängten Element, in Python
Ich habe eine riesige Datendatei, die eine Reihe von Informationen über Autoereignisse enthält. Ich versuche, die Daten über einen einzelnen Autoereignistyp (z. B. Beschleunigung) zu kopieren und in eine separate Datei zu schreiben. Mein aktueller Ansatz speichert die Daten in einer Tabelle - ich benutzte Listen in Listen - bevor ich sie in die separate Datei schreibe (siehe Beispieltabelle unten).
Event Type | Data Location Start | Data Location End
--------------------------------------------
Accelerate | 99 | 181
Break | 182 | 263
Horn | 264 | 351
Accelerate | 352 | 434
...and so on
The table above in Python would be:
event_list = [['Accelerate', 99, 181],
['Break', 182, 263],
['Horn', 264, 351],
['Accelerate', 352, 434]]
Ausgabe: Jedes Mal, wenn ich eine Zeile anhängen, werden alle anderen Zeilen dieser beigefügten Zeile ändern. Ich habe meinen Code und die Konsolenausgabe unten zur Verfügung gestellt.
#!/usr/bin/python
""" File Description """
import os
def main():
""" Organize Car Data Into New File """
event_list = [] # This is the entire table
first_event = True # This is a flag
single_event = [-1, -1, -1] # This is a single row in the table
# [Event Name, Code Line Start, Code Line End]
with open('C:/car_event_data.dat', 'rb') as f:
line = '-1'
while line != '': # If line = '' then it is EOF
line = f.readline()
if line[0:6] == 'Event:':
if first_event == False:
single_event[2] = f.tell() - 1 # Code Line End
event_list.append(single_event) # Completed row
print(event_list)
end = line.find('\x03', 6) # Find the end location of Event Type
single_event[0] = line[6:end] # Event Type
single_event[1] = f.tell() # Code Line Start
first_event = False
f.seek(0, os.SEEK_END) # Put pointer at EOF
single_event[2] = f.tell()
event_list.append(single_event)
if __name__ == '__main__':
main()
Der obige Code erzeugt die folgende Ausgabe:
[['Accelerate', 99, 181]]
[['Break', 182, 263], ['Break', 182, 263]]
[['Horn', 264, 351], ['Horn', 264, 351], ['Horn', 264, 351]]
... and so on
Vielen Dank. Dies behebt das Problem –
Gern geschehen. Bitte akzeptieren Sie die Antwort (das grüne Häkchen), hilft auch mit dem Rep :) –