Thorsten Haude <[EMAIL PROTECTED]> wrote: >>import os >>list = os.listdir('/tmp') >>for filename in list: >> print filename, >> if os.path.isdir(filename): >> print "is a directory" >> else: >> print "is a regular file" > > Wenn ich mal raten darf, was Python macht, sieht das in Ruby so aus: > > dir = Dir.new('/tmp') > dir.each { |filename| > print filename > if filename.stat.directory? > print "is a directory" > else > print "is a regular file" > end > } > > Hm. Auch nicht groß anders. Die Unterschiede kommen wahrscheinlich > eher bei größeren Sachen raus.
Naja, ich kenne keine der beiden Sprachen, finde aber trotzdem gleich einige Unterschiede: - Python verwendet die in tausend Sprachen geläufige Syntax "for <name> in <liste> <separator> <body>", während Ruby offenbar sowas macht: "<Kommando_das_liste_produziert> { | <name> | <body> }, das finde ich schwer lesbar (vor allem wenn ich mir vorstelle wie ich das dann von while, until, etc. unterscheiden soll). - Python verwendet zum Erstellen der Liste ein Kommando mit intuitiv verständlichem Namen (os.listdir('<directory>'), Ruby dagegen offenbar ein Suffix .each hinter dem Namen der Variable, die auf das Verzeichnis zeigt. Das finde ich schon in diesem Fall ungewohnt, und wenn ich mir vorstelle, dass das Verzeichnis nicht in "dir" steckt, sondern in "newplace" oder "wget_target" oder so, wird es noch schwerer. Zumal dann, wenn .each auch auf anderen Dingen als Verzeichnissen agieren kann (z.B. URLs oder Datenbank-dingsens). - und schließlich finde ich das Fragezeichen hinter .stat.directory (oder steht es hinter if <test>?) irgendwie albern, aber vielleicht ist das etwas, was man sehr schätzen lernt: Kommandos, die einen Wahrheitswert zurückliefern, haben hinten ein Fragezeichen. Allerdings nur wenn man akzeptiert, dass es Kommandos gibt, die keinen Wahrheitswert zurückliefern. Ich finde in Perl sehr praktisch dass es die nicht gibt. Gruß, Frank -- Frank Küster Inst. f. Biochemie der Univ. Zürich Debian Developer