Hallo Zusammen,
ich bin erst seit heute in der Phyton Programmierung und bin an meine grenzen gestoßen
ich bräuchte ein Befehl, wie ich den Satz in einer Zeile verändern / löschen und etwas anderes einfügen kann (siehe Beispiel)
z.B.:
Position.in.X=144.98 (Ist Zustand)
Position.in.X=145 (soll Zustand)
Ich habe es geschafft die Zahl zu runden, nur finde ich jetzt kein Befehl wie ich die 144.98 mit den 145 ersetzen kann?
Ich bin für jedliche Hilfe sehr Dankbar.
P.S.: Es ist in einer Datei mit mehreren Zeilen sieht etwas komplexer aus als hier.
Vielen Dank:)
In einer Datei eine Zeile verändern
Hallo und willkommen im Forum!
Wenn sich die Länge der Daten ändert, dann gibt es keine Möglichkeit einfach etwas einzufügen. Am einfachsten ist es, wenn du die ganze Datei neu schreibst.
Wenn sich die Länge der Daten ändert, dann gibt es keine Möglichkeit einfach etwas einzufügen. Am einfachsten ist es, wenn du die ganze Datei neu schreibst.
Das Leben ist wie ein Tennisball.
-
- User
- Beiträge: 4
- Registriert: Donnerstag 5. September 2013, 13:34
Danke schonmal für die Antwort
Wenn ich die Datei neu schreibe, muss ich doch trotzdem die X koordinaten ersetzen. Also stoße ich doch auf das selbe Problem oder nicht?
Grüße
Wenn ich die Datei neu schreibe, muss ich doch trotzdem die X koordinaten ersetzen. Also stoße ich doch auf das selbe Problem oder nicht?
Grüße
Wenn du doch schon die passenden Teile der Zeile extrahiert hast, dann kann das eigentlich kein Problem mehr darstellen.Phytonnoob hat geschrieben:Wenn ich die Datei neu schreibe, muss ich doch trotzdem die X koordinaten ersetzen. Also stoße ich doch auf das selbe Problem oder nicht?
Code: Alles auswählen
>>> parts = 'Position.in.X=144.98'.split('=')
>>> print(parts)
['Position.in.X', '144.98']
>>> print(round(float(parts[1])))
145
>>> print('{0}={1}'.format(parts[0], round(float(parts[1]))))
Position.in.X=145
-
- User
- Beiträge: 4
- Registriert: Donnerstag 5. September 2013, 13:34
Hallo - /me,
deine Antwort hat mir schon sehr weiter geholfen, danke Dir
Wenn ich nun die Datei habe wie sie unten zu sehen ist
job.job_info.identification.plattform=IN117
job.job_info.identification.baulos=C-PRO-ND
job.job_info.identification.lastfall@#INPUT#=UR5b_270_50
job.job_info.basic_variant=v033
job.job_info.classification.Pruefpunktkoor_x=1442.913
job.job_info.classification.Pruefpunktkoor_y=-413.737
job.job_info.classification.Pruefpunktkoor_z=1026.230
job.job_info.classification.Trefferknoten=222
job.job_info.classification.Trefferabweichung_y=7.6421
job.job_info.classification.Trefferabweichung_z=25.4684
job.job_info.classification.horizontal_angle=270
job.job_info.classification.vertical_angle=50
job.job_submit.output_path=.
job.job_submit.output_extensions=*
und ich die (Fett markierten) Koordinaten nun runden muss und wieder in die Datei schreiben möchte - gibt es da eine Möglichkeit diese Zeile zu ersetzen ?
Oder muss ich wie der Kollege davor schon geschrieben die ganze Datei neu schreiben?
deine Antwort hat mir schon sehr weiter geholfen, danke Dir
Wenn ich nun die Datei habe wie sie unten zu sehen ist
job.job_info.identification.plattform=IN117
job.job_info.identification.baulos=C-PRO-ND
job.job_info.identification.lastfall@#INPUT#=UR5b_270_50
job.job_info.basic_variant=v033
job.job_info.classification.Pruefpunktkoor_x=1442.913
job.job_info.classification.Pruefpunktkoor_y=-413.737
job.job_info.classification.Pruefpunktkoor_z=1026.230
job.job_info.classification.Trefferknoten=222
job.job_info.classification.Trefferabweichung_y=7.6421
job.job_info.classification.Trefferabweichung_z=25.4684
job.job_info.classification.horizontal_angle=270
job.job_info.classification.vertical_angle=50
job.job_submit.output_path=.
job.job_submit.output_extensions=*
und ich die (Fett markierten) Koordinaten nun runden muss und wieder in die Datei schreiben möchte - gibt es da eine Möglichkeit diese Zeile zu ersetzen ?
Oder muss ich wie der Kollege davor schon geschrieben die ganze Datei neu schreiben?
-
- User
- Beiträge: 4
- Registriert: Donnerstag 5. September 2013, 13:34
meins sah so aus:P.S.: Zu deiner Frage welchen obskuren Weg ich gegangen bin
Code: Alles auswählen
PK_X=" "
data = data_file.readlines()
for line in data:
if "x" in data[10]:
s=data[10]
x = len(s)-45
PK_x = int(round((float(s[-x:len(s)]))))
XKORD = str(PK_x)
del data[10]
outfile.write(XKORD)
outfile.write('\n')
@Phytonnoob: Du musst die Datei neu schreiben. Denn die Länge der Zeilen ändern sich ja und damit auch die Position der Bytes aller nachfolgenden Zeilen. Es ist einfacher und sicherer die Daten zu lesen, in einer neue, temporäre Datei zu schreiben, und die dann am Ende zur ursprünglichen Datei umzubenennen. Dann hast Du selbst wenn das Programm mittendrin abbricht (Stromausfall, Absturz, …) mindestens einen der beiden Zustände, vorher oder nachher, noch komplett auf der Festplatte.