Variable für aufgerufene Textdatei

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
Dareios
User
Beiträge: 5
Registriert: Sonntag 29. September 2013, 09:27

Ich lasse in einem Script einen Ordner mit Textdateien nach bestimmten strings durchsuchen und fülle ein dictionary mit den Ergebnissen. Ich brauche nun noch eine weitere Information aus den einzelnen Dateien, die sich in der ersten Zeile befindet.

Code: Alles auswählen

def GetPno(path):
	with open(path, "rb") as text:
		f = text.readline()
		k, v = f.strip().split('=')
		g = k.strip().lstrip('&').rstrip(' ')
		print g
Diese Funktion arbeitet nur, wenn ich als Argument den gesamten Pfad inklusive Dateinamen angebe. Gibt es eine Möglichkeit, auf die jeweils durchsuchte Datei zu verweisen? Wenn ich folgendes versuche, wird leider der Pfad der Python-Datei zurückgegeben.

Code: Alles auswählen

def filepath(path):
	with open(path, "rb") as file:
		print os.path.abspath(__file__)
Vielen Dank für Hinweise,
D.
Zuletzt geändert von Anonymous am Mittwoch 2. Oktober 2013, 09:21, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@Dareios: Ich verstehe die Frage nicht. Du hast doch in `path` schon den Pfad zur Datei‽

Nach der Beschreibung brauchst Du eine Funktion die Zeilen einer Datei parst und zwar erst die erste Zeile und dann den Rest. Wobei für den Rest ja schon Code besteht. Die Funktionen zum parsen von Zeilen sollten am besten überhaupt nichts mit Dateien zu tun haben sondern ganz generell mit einem iterierbaren Objekt arbeiten welches Zeilen enthält. Also völlig unabhängig davon sein ob das eine Textdatei, oder eine Liste, oder irgend etwas anderes ist was Zeilen als Elemente liefert. Das könnte dann ungefähr so aussehen:

Code: Alles auswählen

def parse_pno_line(line):
    return line.strip().split('=', 2)[0].lstrip('&').rstrip(' ')


def parse_mapping(lines):
    result = dict()
    for line in lines:
        # 
        # Was immer Du machen musst um aus den Zeilen ein Wörterbuch zu
        # erstellen.
        # 
        pass
    return result


def parse_lines(lines):
    lines = iter(lines)
    pno = parse_pno_line(next(lines))
    mapping = parse_mapping(lines)
    return pno, mapping
`parse_lines()` kann man nun zum Beispiel ein Dateiobjekt übergeben.
Antworten