rekurives konvertieren

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
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Sonntag 12. Juni 2005, 17:23

Ich habe ein Verzeichniss mit mehreren Unterordnern und Textdateien im latin1 Format.

Jetzt würde ich gerne alle nach der Reihe laden und zu utf-8 konvertieren.

Leider habe ich keine Idee, wie ich das angehe, weil ichs nicht gebacken kriege die Daten rekursiv zu laden. :oops:

Jemand einen Codeschnippsel für mich?
TUFKAB – the user formerly known as blackbird
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Sonntag 12. Juni 2005, 18:04

Vielleicht gibt es Dir einen Hinweis, aber wahrscheinlich leistet es nicht ganz was Du möchtest. Na, jedenfalls hast Du hiermit einen Schnipsel aus meinem aktuellen Projekt. Du kannst ja noch damit rumspielen, bis es Dir passt.

Gruß,
Christian

Code: Alles auswählen

def GetAllFiles(path,format='ASA'):
	"""
		will return a list of all files matching the appropiate format
	"""
	if format == 'ASA': #default
		suffix = '.INF'
	else:
		sys.exit('Error: unknown file format')
	#if there is no such file in the directory, but in sub-directories
	if len(glob.glob(path + '*' + suffix)) == 0:
		matches = []
		for root,dirs,files in os.walk('./',topdown=False):
			for f in files:
				if suffix in f: 
					fname = root + '/' + f
					matches.append(fname)
		return matches
	#if files directly found in path
	else:		
		return glob.glob(path + '*' + suffix)
BlackJack

Sonntag 12. Juni 2005, 20:55

Statt './' oder '.' für das aktuelle Verzeichnis würde ich `os.path.curdir` empfehlen und die Pfade sollte man besser mit `os.path.join()` zusammensetzen und nicht mit 'blah' + '/' + 'spam'.

Und wenn ich im aktuellen Verzeichnis mit dem `walk()` anfange, dann sind da doch auch die Dateien im aktuellen Verzeichnis dabei!? Was soll das dann mit den `glob()` und dem else-Zweig!?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Montag 13. Juni 2005, 07:21

Hi

was den ersten Teil des Kommentares angeht, hast Du zwar recht, aber ich war ja noch am Basteln und habe den Code oft auf andere Module abstimmen müssen. Da bleibt manchmal die Sauberkeit auf der Strecke.
Was den zweiten Teil Absatz angeht: Die Antwort steht im Kommentar - das ist so gewollt: Entweder das Eine oder das Andere soll zurückgegeben werden. Ja, auch das geht eleganter - ich arbeite dran. Aber im Moment machen mir eher einige Module des GUI Sorgen, während die anderen Utilities und der Kern der Anwendung wenigstens funktionieren ... und sauberer geschrieben sind. Refactoring steht da erst an zweiter Stelle. Deswegen auch meine Bemerkung a la "Du kannst ja noch damit rumspielen, bis es Dir passt.". Das Schnipsel beantwortet doch zumindest die Frage, oder?

Gruß,
Christian
BlackJack

Montag 13. Juni 2005, 22:18

CM hat geschrieben:Das Schnipsel beantwortet doch zumindest die Frage, oder?
Stümmt. Ich weiss, ich nörgel zuviel rum, sorry.
Antworten