[Python-de] FileLight in Python + Tk

Mathias Uebel mathias.uebel at meeloon.de
Do Jul 3 16:02:11 UTC 2008


Stefan Schwarzer schrieb:
Hallo Stefan,

> da sich sonst keiner erbarmt ;-) 
Herzlichen Dank für Dein Erbarmen. Im Ernst, ich bin dankbar, wenn ich
partizipieren darf.
Mittlerweise habe ich schon eine weitere Version hier abgelegt:
http://www.meeloon.de/index-0-3-29.html
UserGroup: Ich bin aufs Land gezogen. ;-(

[...]

>> 	from math import *
> 
Das kommt eh raus, da ich die Kreisberechnung nicht mehr brauche. Aber
der Hinweis im Allgemeinen ist richtig und werde ich beherzigen.
> 
[...]
>> except:
>> 	print """Folgenden Module sind unbedingt erforderlich: ... """
>> 	sys.exit(1)
> 
> Das Abfangen von Exceptions allein mit except solltest du
> tunlichst vermeiden. [...]

Ja stimmt. Ich gebe zu, das sollte im Nachhinein passieren. Habe ich
aber versäumt.
[...]
>> lcmp = lambda idx: lambda b, a: (a[idx] < b[idx]) and -1 or (a[idx] >
>> b[idx]) and 1 or 0
> 
> Sieht meiner Ansicht nach schon "obfuscated" aus. ;-) Ich
> würde eine längere aber lesbarere Funktion bevorzugen.
Stimmt auch. Eine _ordentliche_ Funktion ist lesbarer.
> 
>> def HumanValue(value):
>> 	"""human-readable Values"""
> 
> Hauptwörter schreibt man im Englischen klein. Ein paar
> Ausnahmen sind Eigennamen, Himmelsrichungen und Jahreszeiten
> (unter bestimmten Bedingungen).
Ohne Worte ...
> 
>> 	if value > 1024 * 1024 * 1024:
>> 		return "%d GB" % (value / 1024 / 1024 / 1024)
>> 	if value > 1024 * 1024:
>> 		return "%d MB" % (value / 1024 / 1024)
>> 	if value > 1024:
>> 		return "%d KB" % (value / 1024)
>> 	return "%d B" % value
> 
> Hier gefällt mir gut, dass du die Vielfachen von 1024 deutlich
> als solche hinschreibst statt Werte wie 1048576 zu verwenden.
Danke.
> 
>> class PathWalk(object):
>> 	"""walk the path recursiv and add the filesize"""
>> 	def __init__(self, POINT=os.environ['HOME']): #getcwd()):
>> 		self.POINT = POINT
> 
> Warum die eigenwillige Schreibung mit Großbuchstaben für ein
> Attribut? Such mal nach PEP 8, dem Python Style Guide.
Das schaue ich mir an! Versprochen.
> 
>> 		self.oldPOINT = ""
>> 		self.Action()
>>
>> 	def Action(self):
>> 		"""walk the File tree"""
>> 		# only if is a new access
>> [...]
> 
> Ich gebe zu, dass ich mir das jetzt nicht im Detail angeschaut
> habe, aber ich würde erwarten, dass du hier mehr mit os.walk
> machen könntest. Denk daran, dass du die durch den Iterator
> zurückgegebenen Listen "in-place" verändern kannst (siehe
> Python-Dokumentation).
Habe ich gemacht. Denke ich jedenfalls.
> 
>> 	def FileListFiles(self):
>> 		self.FILELIST_files.sort(cmp=lcmp(0))
> 
> Verwende am besten das Schlüsselwort-Argument key statt cmp.
Schau ich mir in der Doku an.
[...]
> 
> Den Namen FileSumme finde ich nicht sehr intuitiv. Außerdem
> würde man in Python-Code eher file_summe schreiben. Hm, wenn
> du versuchst, alles auf Englisch zu schreiben, warum nicht
> "sum" statt "summe"?
Ja, ich muss mir in Sachen Bezeichnungen besser vorher einen Plan machen.
> 
>> 	def Paint(self):
>> 		"""Action"""
> 
> Kein sehr aussagekräftiger Docstring. ;-)
Richtig, kommt noch.
> Warum rechnest du hier mit zwei verschiedenen Winkelmaßen?
> 360 Grad und 2*Pi sind doch äquivalent.
Wie oben geschrieben: Es sind Altlasten. Ich wollte den Kreis rundrum
beschriften.

>> 			c += 1
>> 			# if end of color list: beginn the list
>> 			if c == 24: c = 0;
> 
> Das Semikolon brauchst du nicht.
> 

Danke nochmal. Bis die Tage.

Mathias



Mehr Informationen über die Mailingliste python-de