Seite 1 von 1

rekurives konvertieren

Verfasst: Sonntag 12. Juni 2005, 17:23
von mitsuhiko
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?

Verfasst: Sonntag 12. Juni 2005, 18:04
von CM
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)

Verfasst: Sonntag 12. Juni 2005, 20:55
von BlackJack
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!?

Verfasst: Montag 13. Juni 2005, 07:21
von CM
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

Verfasst: Montag 13. Juni 2005, 22:18
von BlackJack
CM hat geschrieben:Das Schnipsel beantwortet doch zumindest die Frage, oder?
Stümmt. Ich weiss, ich nörgel zuviel rum, sorry.