Einlesen von .fil Dateien

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Hi,
ich habe sehr viele Dateien mit der Endung .fil. Wie kann ich diese einlesen und zusammenführen in Python. Also zum Beispiel eine große .csv Datei daraus machen?
Über Hilfe würde ich mich freuen.

Grüße
BlackJack

@Lienz20013: Welches Programm hat die denn erzeugt? Was ist da drin gespeichert? In welchem Format?
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Welches Programm weiß ich nicht. Die Dateien sehen so aus:

start: 15.09.2011
ende: 01.10.2011

20110915 0 9999000
20110915 10000 9999000
20110915 20000 58719
20110915 30000 56761
20110915 40000 51767
20110915 50000 51117
20110915 60000 67417
20110915 70000 97679
....

Drei Spalten mit Datum, Zähler, Temperatur.
BlackJack

@Lienz20013: Na dann kann man das doch mit den üblichen Mitteln für Text/CSV-Dateien von Numpy oder Pandas einlesen.
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Also zu Beispiel pandas.io.parsers.read_csv. Probier ich manl aus. Ich dachte das geht wegen der endung nicht und es würde so was geben wie read_fil.
BlackJack

@Lienz20013: Dazu müsste ``*.fil`` ja irgendwie ein bekanntes und halbwegs verbreitetes Format sein für das die Pandas-Entwickler eine `read_fil()`-Funktion geschrieben haben.
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Ich habs hinbekommen aber jetzt frag ich mich wie ich die obersten 3 zeilen jedes files nicht mit einlese und zwar mach ich das bis jetzt so:

Code: Alles auswählen

directory = r"data/RAW/klima_1_stunden-daten/"
files = "*.fil"
filenames = glob.glob(directory + files)
with open('data/climateMOX_long_therm.txt', 'w') as outfile:
    for fname in filenames:
        with open(fname) as infile:
            for line in infile:
                outfile.write(line)

climate_Moxa = 'data/climateMOX_long_therm.txt' 
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das von dir zitierte `pandas.io.parsers.read_csv` kennt einen `skiprows` Parameter der genau das tut was du brauchst.

Daneben kann man natuerlich auch selbst zeilen ueberspringen (was evtl zu bevorzugen ist, wenn du nur die Dateien mergen willst)

Code: Alles auswählen

with open(fname) as infile:
    for _ in itertools.izip(infile, xrange(3)):
        pass
    for line in infile:
        ...
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@cofi: das geht schöner mit islice:

Code: Alles auswählen

with open(fname) as infile:
    for line in itertools.islice(infile, 3, None):
        ...
Antworten