Cyberbroker hat geschrieben:Code: Alles auswählen
for i in names:
a=("http://rmg.mit.edu/adjacencylist/"+i)
print(a) #Test ob Ausgabe korrekt/wo fehler is.
urllib.request.urlretrieve \
(a,i+".txt")
Das klappt jetzt soweit alles sehr gut.
Ich bin ein ziemlicher Python Neuling. Hoffe ich hab in dem Code oben keine groben Schnitzer erlaubt. Falls doch bin ich für jeden Hinweis dankbar.
Python-Neuling? Dann solltest du wissen, dass es einen entscheidenden Unterschied macht ob du Python2 oder Python3 verwendest. Python3 ist an manchen Stellen bewusst nicht abwärtskompatibel. Ich vermute, dass es bei dir Python3 ist, da du
print mit Klammern verwendest.
Kurz zum Code: verwende sinnvolle Namen, verwende ab und zu mehr Leerzeichen, verwende Klammern nur wenn sie erforderlich sind und versuche Zeilenfortsetzungen mit Backslash zu vermeiden.
Jetzt erkläre ich das etwas länger:
i ist extrem nichtssagend und wird typischerweise als Laufvariable mit numerischem Inhalt in Schleifen verwendet. Als passender würde ich es erachten, wenn der Bezeichner
name hieße. Ich weiß, dass das jetzt nur ein kurzes kleines Programm ist, aber warum soll man es nicht von Anfang an ordentlich machen? Sinnvolle Namensgebung hilft ungemein beim Verständnis des Quelltextes. Wir bekommen dann also:
Die Klammern braucht man hier nicht. Zudem ist dieses
+i hinten nur schwer zu sehen. Hier bietet sich die im
Python Style Guide (bitte bei Gelegenheit lesen) empfohlene Verwendung von Leerzeichen an. Zusammen mit der vorherigen Änderung des Bezeichnernamens ergibt sich dann:
Die Verwendung von einfachen Hochkommas statt doppelter macht keinen Unterschied, aber beim Drucken von Quelltext brauche ich mit meiner Methode weniger Toner.
Man könnte den String übrigens statt mit dem Plus-Zeichen auch mit
format zusammenbauen, aber das möchte ich nicht auch noch direkt erklären.
Namen, Leerzeichen, Umbruch:
Zum Zeilenumbruch sollte ich dann doch noch ein paar Worte verlieren. Die Verwendung des Backslash als Fortsetzungszeichen ist meiner Meinung nach keine wirklich gute Idee. Es genügt schon ein Leerzeichen dahinter und schon funktioniert das nicht mehr. Im Editor fällt das typischerweise nicht auf, zur Laufzeit dann aber sehr schnell. Hier helfen dann Klammern sehr schön - ja, genau die Klammern die ich dir eben noch ausgeredet habe. Innerhalb von Klammern wird der Befehl fortgesetzt, auch wenn er über mehrere Zeilen geht. Die folgenden Beispiele zeigen wie das aussehen kann.
Zum Schluss noch ein Tipp für künftige Höhenflüge mit Python: