Hallo Liebe Leute,
ich bin neu hier und Python-Anfänger. Im Rahmen meiner Masterarbeit soll ich aus mehreren Dateien (Dateiendung .out, bzw .arc) bestimmte Daten auslesen und in ein neues File schreiben.
Ist es dabei möglich ein Skript zu schreiben, bei dem man zunächst eine Datei geöffnet ,dann vorzugeben in welcher Zeile und Spalte sich der gewünschte Wert befindet und diesen direkt in das Neue File zu übertragen?
Mit freundlichen Grüßen
MRO5494
Datei auslesen und in neue Datei übertragen
Die Dateiendung .out oder .arc sagt nicht wirklich etwas darueber aus, WAS das ist. Du wirst da also noch ein bisschen weiter ausholen muessen um zu beschreiben, was genau das fuer Formate sind. Dann kann man auch Hinweise dazu geben, *wie* sich das loesen laesst. Allgemein kann man natuerlich sowas programmieren, wenn man ein Format hat, das Daten irgendwie in Tabellenform vorhaelt, und diese Dateien lesen und schreiben kann.
Sagen wir ich habe folgenden Aufbau:
1 x y z
2 Drehzahl 1 1 1
3 Lambda 1 2 1
4 Hubraum 1 1 1
Nun möchte ich ein Skript haben, dass sagt lese mir Zeile 3 den Wert für Lambda in Spalte y aus und schreibe es in eine neue Datei "Auswertung.txt" oder Ähnliches.
1 x y z
2 Drehzahl 1 1 1
3 Lambda 1 2 1
4 Hubraum 1 1 1
Nun möchte ich ein Skript haben, dass sagt lese mir Zeile 3 den Wert für Lambda in Spalte y aus und schreibe es in eine neue Datei "Auswertung.txt" oder Ähnliches.
Grundsätzlich geht das. Allerdings musst du die Datei schon selbst interpretieren.
Du kannst die Datei Zeile für Zeile durchgehen, den Inhalt nach Leerzeichen trennen (split) und so an die entsprechenden "Spalten" kommen.
Wo genau die Schwierigkeiten liegen, kommt dann auf den tatsächlichen Fall an. Können zum Beispiel mehrere Zeilen mit "Drehzahl" vorkommen und wie unterscheidet man die Zugehörigkeit, etc.
Du kannst die Datei Zeile für Zeile durchgehen, den Inhalt nach Leerzeichen trennen (split) und so an die entsprechenden "Spalten" kommen.
Wo genau die Schwierigkeiten liegen, kommt dann auf den tatsächlichen Fall an. Können zum Beispiel mehrere Zeilen mit "Drehzahl" vorkommen und wie unterscheidet man die Zugehörigkeit, etc.
Dann benutzt du das csv-Modul um die Daten einzulesen und das entsprechende Element rauszuloesen. Das kannst du dann wieder mit dem csv-Modul schreiben.
Code: Alles auswählen
import io
import csv
DATA = """1 x y z
2 Drehzahl 1 1 1
3 Lambda 1 2 1
4 Hubraum 1 1 1"""
ROW, COL = 2, 1
def main():
with io.StringIO(DATA) as inf:
reader = csv.reader(inf, delimiter=" ")
value = list(reader)[ROW][COL]
print(value)
if __name__ == '__main__':
main()
Okay, Vielen Dank Ihr 2!
Da ich noch am Anfang mit Python bin, verstehe ich noch nicht so viel davon. Könnt ihr mir empfehlen, nach was ich da googeln soll. Ich habe auch schon oft vom dem package Numpy gelesen. Geht das in die richtige Richtung?
Mit freundlichen Grüßen
MRO5494
Da ich noch am Anfang mit Python bin, verstehe ich noch nicht so viel davon. Könnt ihr mir empfehlen, nach was ich da googeln soll. Ich habe auch schon oft vom dem package Numpy gelesen. Geht das in die richtige Richtung?
Mit freundlichen Grüßen
MRO5494
Nein, das Paket numpy bezieht sich auf numerische Matrizen. Eine Alternative zu csv das ich verwandt habe ist das Pandas-Modul, das kannst/solltest du dir anschauen. Ich bin allerdings etwas verwirrt, ob das was du da als Format angegeben hast jetzt etwas ist, das du dir selbst ausgedacht hast. Oder ist das wirklich das verwandte Format? Die Formulierung "Sagen wir ich habe folgenden Aufbau" suggeriert das ist was selbst ausgedachtes.
-
- User
- Beiträge: 491
- Registriert: Mittwoch 13. November 2019, 08:38
Wenn ich die Daten richtig interpretiere hast du 3 Dimensionen:
Da der Input sehr strukturiert ist, kann als Quick'n'dirty-Methode auch einfach die Datei stumpf mit den Standardfunktionen eingelesen und dann aussortiert und umgespeichert werden. Das ist jedoch nicht der schöne und korrekte Weg.
- Messzyklus 0 bis n
- Zylinder 1 bis 4
- jeweils Messwerte für rpm, bore, stroke, conn_rod, cyl_disp, ...
Da der Input sehr strukturiert ist, kann als Quick'n'dirty-Methode auch einfach die Datei stumpf mit den Standardfunktionen eingelesen und dann aussortiert und umgespeichert werden. Das ist jedoch nicht der schöne und korrekte Weg.
Hallo Leute,
Ich habe mich jetzt ein wenig eingearbeitet und arbeite aktuell mit pandas. Nun möchte ich Daten in eine csv-Datei schreiben. Aber leider klappt es nicht wie ich möchte.
Mein Code sieht wie folgt aus:
IP = pd.read_csv(file_path, header=2, delim_whitespace=True, low_memory=False)
print (IP['sp_ip_01'][2])
result = IP['sp_ip_01'][2]
result.to_csv ('IP.csv')
Jetzt bekomme ich folgenden Fehler: AttributeError: 'str' object has no attribute 'to_csv'
Was kann ich tun? Die packages pandas und csv sind importiert.
Vielen Dank im Voraus!
Euer MRO
Ich habe mich jetzt ein wenig eingearbeitet und arbeite aktuell mit pandas. Nun möchte ich Daten in eine csv-Datei schreiben. Aber leider klappt es nicht wie ich möchte.
Mein Code sieht wie folgt aus:
IP = pd.read_csv(file_path, header=2, delim_whitespace=True, low_memory=False)
print (IP['sp_ip_01'][2])
result = IP['sp_ip_01'][2]
result.to_csv ('IP.csv')
Jetzt bekomme ich folgenden Fehler: AttributeError: 'str' object has no attribute 'to_csv'
Was kann ich tun? Die packages pandas und csv sind importiert.
Vielen Dank im Voraus!
Euer MRO