NETLOG Profilbild Download-Manager

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
m477hi45
User
Beiträge: 33
Registriert: Sonntag 30. Mai 2010, 05:41

Hier einmal auch der aktuelle Code:

http://paste.pocoo.org/show/z6Te4ozBOAla57PLFEWd/

lg
;)
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Es wäre vielleicht ganz gut den Code in einzelne Funktionen zu packen.
m477hi45
User
Beiträge: 33
Registriert: Sonntag 30. Mai 2010, 05:41

gkuhl hat geschrieben:Es wäre vielleicht ganz gut den Code in einzelne Funktionen zu packen.
oke.. nur was genau ?

ich verstehe den Sinn von Funktionen, wenn bestimmter Code öfter als 1x ausgeführt wird..
aber eigentlich, wird ja alles ganz linear abgearbeitet, ohne wesentliche wiederholungen..

hätten da funktionen viel sinn ?


lg
BlackJack

Na mindestens mal eine Funktion um das alles von der Modulebene wegzubekommen, und die dann mit dem ``if __name__ == '__main__':``-Idiom aufrufen, damit man das auch als Modul importieren zu können ohne das es gleich ausgeführt wird.

Dann kann man da sicher einzelne Schritte auf Funktionen aufteilen, so dass man einzelne Teile auch separat testen kann. Ausserdem könnte man Benutzerinteraktion von Programmlogik trennen.

Das `string`-Modul wird ja immer noch verwendet!?
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

lunar hat geschrieben:@Dauerbaustelle: Bilder sind Binärdateien :)
Hatte aber auch so funktioniert. Liegt wohl daran, dass unter Unix/Linux es da keinen Unterschied gibt.
m477hi45
User
Beiträge: 33
Registriert: Sonntag 30. Mai 2010, 05:41

BlackJack hat geschrieben:Na mindestens mal eine Funktion um das alles von der Modulebene wegzubekommen, und die dann mit dem ``if __name__ == '__main__':``-Idiom aufrufen, damit man das auch als Modul importieren zu können ohne das es gleich ausgeführt wird.

Dann kann man da sicher einzelne Schritte auf Funktionen aufteilen, so dass man einzelne Teile auch separat testen kann. Ausserdem könnte man Benutzerinteraktion von Programmlogik trennen.

Das `string`-Modul wird ja immer noch verwendet!?

Wie kann ich denn das "String" Modul genau ersetzen ?

lg
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

m477hi45 hat geschrieben: Wie kann ich denn das "String" Modul genau ersetzen ?
Indem man die Methoden eines String-Objektes aufruft?

Code: Alles auswählen

In [1]: "Hallo".lower()
Out[1]: 'hallo'
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
m477hi45
User
Beiträge: 33
Registriert: Sonntag 30. Mai 2010, 05:41

Hyperion hat geschrieben:
m477hi45 hat geschrieben: Wie kann ich denn das "String" Modul genau ersetzen ?
Indem man die Methoden eines String-Objektes aufruft?

Code: Alles auswählen

In [1]: "Hallo".lower()
Out[1]: 'hallo'
oke danke ;)
m477hi45
User
Beiträge: 33
Registriert: Sonntag 30. Mai 2010, 05:41

Ich hab das ganze auch gleich zur Länder Code Abfrage dazugegeben..

Code: Alles auswählen

language = raw_input('Enter the language of the user\'s profil: [de, en, fr, ..]: ')

language = language.lower()
language = language.strip()
Also kann man statt "de" jetzt auch " DE" schreiben ;)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Man kann die Methoden auch kaskadierend aufrufen (da diese jeweils einen neues String-Objekt zurückliefern):

Code: Alles auswählen

In [1]: "  Hallo".strip().lower()
Out[1]: 'hallo'
Und jetzt rate mal, was Dir raw_input() liefert und was man da nun machen könnte ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
m477hi45
User
Beiträge: 33
Registriert: Sonntag 30. Mai 2010, 05:41

Hyperion hat geschrieben:Man kann die Methoden auch kaskadierend aufrufen (da diese jeweils einen neues String-Objekt zurückliefern):

Code: Alles auswählen

In [1]: "  Hallo".strip().lower()
Out[1]: 'hallo'
Und jetzt rate mal, was Dir raw_input() liefert und was man da nun machen könnte ;-)
oh danke ;) das verkürzt den code um einiges.. ja, danke, das "wait = " ist dezent unnötig ..

wird jetzt entfernt !

lg ;)
Benutzeravatar
snafu
User
Beiträge: 6980
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

EyDu hat geschrieben:
snafu hat geschrieben:Hier mal der Versuch, alle Möglichkeiten zum Finden des Home-Pfads auszuschöpfen:
Man könnte auch noch folgendes versuchen:

Code: Alles auswählen

os.path.expanduser('~')
Das sollte auch der bevorzugte Weg sein. Hatte ich in dem Moment nicht dran gedacht.
m477hi45
User
Beiträge: 33
Registriert: Sonntag 30. Mai 2010, 05:41

hat jemand von euch eigentlich einen MAC ?

um zu testen ob es da geht ? ich konnte es derzeit erst auf windows (XP, Vista, 7) und Linux (Ubuntu) testen..

lg
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Ja, funktioniert.
EyDu
User
Beiträge: 4882
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

m477hi45 hat geschrieben:hat jemand von euch eigentlich einen MAC ?

um zu testen ob es da geht ? ich konnte es derzeit erst auf windows (XP, Vista, 7) und Linux (Ubuntu) testen..
Man könnte auch einfach in die Dokumentation schauen ;-)
Das Leben ist wie ein Tennisball.
m477hi45
User
Beiträge: 33
Registriert: Sonntag 30. Mai 2010, 05:41

EyDu hat geschrieben:
m477hi45 hat geschrieben:hat jemand von euch eigentlich einen MAC ?

um zu testen ob es da geht ? ich konnte es derzeit erst auf windows (XP, Vista, 7) und Linux (Ubuntu) testen..
Man könnte auch einfach in die Dokumentation schauen ;-)

stimmt ;)
aber beim realen testen tauchen doch immer wieder überaschungen auf ^^

also danke derdon ;)


ich hab derzeit das hier drinnen:

Code: Alles auswählen

if os.name=="nt":
    [...]
    os.system("cls") 			#clear windows content

if os.name=="posix":
    os.system("clear")                    # clear screen on linux

beim mac kann ich eh auch den gleichen terminal befehl wie bei linux verwenden oder ?
also:

Code: Alles auswählen

if os.name=="mac":
    os.system("clear")                    # clear screen on MAC

ich mein, ja von der dokumentation die ich gefunden hab müsste es gehen ;)
aber ich hör das auch immer gern von MAC usern ;)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dafür würde ich dann aber ein dict nehmen:

Code: Alles auswählen

cls_command = {
    "nt": "cls",
    "posix": "clear",
    "mac": "clear"
}
print cls_command[os.name]
Anstelle von os.system() evtl. auch noch das subprocess Modul in Betracht ziehen - auch wenn bei einem "clear" der Rückgabewert ziemlich egal sein sollte, so übt es und festigt den Hang zum richtigen Modul bei der Problemstellung von Systemaufrufen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
m477hi45
User
Beiträge: 33
Registriert: Sonntag 30. Mai 2010, 05:41

[quote="Hyperion"]Dafür würde ich dann aber ein dict nehmen:

Code: Alles auswählen

cls_command = {
    "nt": "cls",
    "posix": "clear",
    "mac": "clear"
}
print cls_command[os.name]
Danke für den schönen Code ;)
Ich hab halt für Windows um einiges mehr an Befehlen; eben für den Titel, Farbe, Fenstergröße.. was unter linux vlt. weniger wichtig ist..

Also du meinst wenn ich statt: os.system(cls) folgendes schreibe is es schöner ?

Code: Alles auswählen

import subprocess
subprocess.Popen("cls", shell  = True)
wo liegt genau der Vorteil ?
Benutzeravatar
snafu
User
Beiträge: 6980
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Mit `shell=True` besteht in der Tat kein großer Vorteil. Wenn man die subprocess-Doku verstanden hat, weiß man auch, wie man es anders besser macht. :)
m477hi45
User
Beiträge: 33
Registriert: Sonntag 30. Mai 2010, 05:41

snafu hat geschrieben:Mit `shell=True` besteht in der Tat kein großer Vorteil. Wenn man die subprocess-Doku verstanden hat, weiß man auch, wie man es anders besser macht. :)
Aus der Doku bin ich anscheinend nicht schlaue geworden..

Aus der hab ich das mit dem 'shell=True'..
Antworten