Ich bin neu in der Python und Scripting im Allgemeinen, so würde ich wirklich eine Anleitung beim Schreiben eines Python-Skripts schätzen. Also, auf den Punkt:Wie bekomme ich nur die Zeilen mit dem höchsten Wert, wenn sie sich in einem Zeitfenster befinden?
Ich habe eine große Anzahl von Dateien in einem Verzeichnis. Einige Dateien sind leer, andere enthalten Zeilen wie folgt aus:
16 2009-09-30T20: 07: 59.659Z 0,05 0,27 13,559 6
16 2009-09-30T20: 08: 49.409Z 0,22 0,312 15,691 7
16 2009-09-30T20: 12: 17.409Z -0.09 0.235 11.826 4
16 2009-09-30T20: 12: 51.159Z 0.15 0.249 12.513 6
16 2009-09-30T20: 15: 57.209Z 0.16 0.234 11.776 4
16 2009-09-30T20: 21: 17.109Z 0,38 0,303 15,201 6
16 2009-09-30T20: 23: 47.959Z 0,07 0,259 13,008 5
16 2009-09-30T20: 32: 10.109Z 0.0 0.283 14.195 5
16 2009-09-30T20: 32: 10.309Z 0,0 0,239 12,009 5
16 2009-09-30T20: 37: 48.609Z -0,02 0,256 12,861 4
16 2009-09-30T20: 44: 19.359Z 0,14 0,251 12,597 4
16 2009-09-30T20: 48: 39.759Z 0,03 0,284 14,244 5
16 2009-09-30T20: 49: 36.159Z -0,07 0,278 13,98 4
16 2009-09-30T20: 57: 54.609Z 0,01 0,304 15,294 4
16 2009-09-30T20: 59: 47.759Z 0,27 0,265 13,333 4
16 2009-09-30T21: 02: 56.209Z 0,28 0,272 13,645 6
und so weiter.
Ich möchte diese Zeilen aus den Dateien in eine neue Datei bekommen. Aber es gibt einige Bedingungen! Wenn sich zwei oder mehr aufeinanderfolgende Zeilen innerhalb eines Zeitfensters von 6 Sekunden befinden, sollte nur die Zeile mit dem höchsten Schwellenwert in die neue Datei gedruckt werden.
So etwas wie die:
Original:
16 2009-09-30T20: 32: 10.109Z 0,0 0,283 14,195 5
16 2009-09-30T20: 32: 10.309Z 0,0 0,239 12,009 5
in der Ausgabedatei:
16 2009-09-30T20: 32: 10.109Z 0,0 0,283 14,195 5
Denken Sie daran, dass die Linien aus verschiedenen Dateien Zeiten innerhalb 6s Fenster mit Linien aus anderen Dateien haben können, also die Linie, das wird in o sein Ausgabe ist diejenige, die den höchsten Schwellenwert von verschiedenen Dateien hat.
Der Code, der erklärt, was ist hier, was in den Zeilen ist:
import glob
from datetime import datetime
path = './*.cat'
files=glob.glob(path)
for file in files:
in_file=open(file, 'r')
out_file = open("times_final", "w")
for line in in_file.readlines():
split_line = line.strip().split(' ')
template_number = split_line[0]
t = datetime.strptime(split_line[1], '%Y-%m-%dT%H:%M:%S.%fZ')
mag = split_line[2]
num = split_line[3]
threshold = float(split_line[4])
no_detections = split_line[5]
in_file.close()
out_file.close()
Vielen Dank für Hinweise, Richtlinien, ...
was haben Sie versucht, unerwünschte Datensätze zu verwerfen? und sind die Datensätze zwischen Dateien überlappend oder streng nicht überlappend (1 Datei endet, 2. Datei wird nur mit höheren Daten fortgesetzt)? – Aprillion
Ich interessiere mich nicht für die unerwünschten Aufzeichnungen. Dateien überlappen – lmorgh
gut ... es ist einfach, nur eine Datei aus all diesen Dateien zu erstellen und damit zu arbeiten. das sollte den Code vereinfachen. Also, sagen wir, ich habe nur eine Datei, die zeitlich sortiert ist? – lmorgh