Seite 3 von 4

Re: NETLOG Profilbild Download-Manager

Verfasst: Montag 31. Mai 2010, 22:38
von m477hi45
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 ;)

Re: NETLOG Profilbild Download-Manager

Verfasst: Dienstag 1. Juni 2010, 06:28
von snafu
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.

Re: NETLOG Profilbild Download-Manager

Verfasst: Dienstag 1. Juni 2010, 18:18
von m477hi45
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

Re: NETLOG Profilbild Download-Manager

Verfasst: Dienstag 1. Juni 2010, 18:30
von derdon
Ja, funktioniert.

Re: NETLOG Profilbild Download-Manager

Verfasst: Dienstag 1. Juni 2010, 19:03
von EyDu
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 ;-)

Re: NETLOG Profilbild Download-Manager

Verfasst: Dienstag 1. Juni 2010, 19:21
von m477hi45
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 ;)

Re: NETLOG Profilbild Download-Manager

Verfasst: Dienstag 1. Juni 2010, 22:53
von 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]
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.

Re: NETLOG Profilbild Download-Manager

Verfasst: Mittwoch 2. Juni 2010, 08:46
von m477hi45
[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 ?

Re: NETLOG Profilbild Download-Manager

Verfasst: Mittwoch 2. Juni 2010, 17:34
von snafu
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. :)

Re: NETLOG Profilbild Download-Manager

Verfasst: Mittwoch 2. Juni 2010, 17:43
von m477hi45
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'..

Re: NETLOG Profilbild Download-Manager

Verfasst: Mittwoch 2. Juni 2010, 18:55
von BlackJack
@snafu: Zumindest unter Windows geht es hier teilweise um eingebaute Shell-Befehle, und dazu braucht man nunmal eine Shell.

@m477hi45: Ich würde mir das mit diesen Befehlen grundsätzlich mal überlegen. Zumindest unter Linux/Unix es das unüblich das Konsolenprogramme selbige leeren. Denn oft hat man ja vorher dort Befehle ausgeführt und möchte gar nicht, dass ein Programm die Ausgaben die da schon stehen, einfach so löscht. Das kann *sehr* ärgerlich sein.

Re: NETLOG Profilbild Download-Manager

Verfasst: Mittwoch 2. Juni 2010, 19:21
von m477hi45
@m477hi45: Ich würde mir das mit diesen Befehlen grundsätzlich mal überlegen. Zumindest unter Linux/Unix es das unüblich das Konsolenprogramme selbige leeren. Denn oft hat man ja vorher dort Befehle ausgeführt und möchte gar nicht, dass ein Programm die Ausgaben die da schon stehen, einfach so löscht. Das kann *sehr* ärgerlich sein.[/quote]


oke, stimmt damit hast du natürlich Recht..
wenn man den terminal nicht nur für das skript aufmacht.. was unter MAC aber whs. wahrscheinlicher ist..

ich mein für Anwender hab ich ja die PYC bzw. EXE dateien.. und linux user die sich ein bisschen auskennen können die PY datei verwenden und das "clear" ja rauslöschen..

aber nein, für "posix" werde ichs vlt echt rausnehmen und stattdessen eine "Trennzeile" einfügen..

hat der "clear" befehl, nach meinung hier anwesender MAC user, bei MACs einen sinn ?

lg

Re: NETLOG Profilbild Download-Manager

Verfasst: Mittwoch 2. Juni 2010, 21:53
von m477hi45
Hallo!

Ich wollte jetzt einen "Update Check" einbauen..
Leider braucht dieser Check bis zu 20 sekunden.. was viel zu lang ist um ihn bei jedem programaufruf am Anfang auszuführen..
allgemein hätt ich die funktion aber schon gerne..
kann man das irgendwie im Hintergrund ausführen ?
oder muss man das in eine seperate .py datei schreiben ?

Code: Alles auswählen

#update check
UPDATEURL = "https://sourceforge.net/projects/netlogdownload/files/"
nextversion =  "1.0"

print "Checking for updates ..."
try:
    up = urllib.urlopen(UPDATEURL)
except:
    nothing
try:
    update = up.read()
    isnew = update.find('downloader_'+nextversion)
except:
    nothing
if isnew != -1:
    print "New Version ("+nextversion+") available!"
    print "Please update from: https://sourceforge.net/projects/netlogdownload/"
#start link in default browser ?
    wait=raw_input()		

Re: NETLOG Profilbild Download-Manager

Verfasst: Mittwoch 2. Juni 2010, 22:54
von cofi
Stichwort Threads.

Ausserdem willst du dir mal Stringformatting anschaun.

Re: NETLOG Profilbild Download-Manager

Verfasst: Donnerstag 3. Juni 2010, 08:21
von m477hi45
cofi hat geschrieben:Stichwort Threads.

Ausserdem willst du dir mal Stringformatting anschaun.

danke ;) das mit den threads funktioniert bestens!

Re: NETLOG Profilbild Download-Manager

Verfasst: Donnerstag 3. Juni 2010, 08:46
von m477hi45
cofi hat geschrieben:Stichwort Threads.
allerdings.. kann ich eine globale variable definieren die ich dann auch außerhalb des threads aufrufen kann ?

funktioniert irgendwie nicht.. mit "global var".

lg

Re: NETLOG Profilbild Download-Manager

Verfasst: Donnerstag 3. Juni 2010, 08:59
von m477hi45
m477hi45 hat geschrieben:
cofi hat geschrieben:Stichwort Threads.
allerdings.. kann ich eine globale variable definieren die ich dann auch außerhalb des threads aufrufen kann ?

funktioniert irgendwie nicht.. mit "global var".

lg

ok tut mir leid für die dumme frage.. bin gerade selbst draufgekommen ..

Re: NETLOG Profilbild Download-Manager

Verfasst: Donnerstag 3. Juni 2010, 10:20
von EyDu
Hallo.
m477hi45 hat geschrieben:allerdings.. kann ich eine globale variable definieren die ich dann auch außerhalb des threads aufrufen kann ?
Das kannst du schon, möchtest du aber nicht. Was du willst sind ein Event oder eine Queue, welche du als Parameter an den Thread übergibst.

Re: NETLOG Profilbild Download-Manager

Verfasst: Donnerstag 3. Juni 2010, 10:33
von m477hi45
EyDu hat geschrieben:Hallo.
m477hi45 hat geschrieben:allerdings.. kann ich eine globale variable definieren die ich dann auch außerhalb des threads aufrufen kann ?
Das kannst du schon, möchtest du aber nicht. Was du willst sind ein Event oder eine Queue, welche du als Parameter an den Thread übergibst.
hm.. also ich habs jetzt derzeit so gemacht:

Code: Alles auswählen

UPDATEURL = "https://sourceforge.net/projects/netlogdownload/files/"
nextversion =  "0.9.2"


class MyThread (Thread):
    newupdate = 0  

    def run (self):        
        try:
            up = urllib.urlopen(UPDATEURL)
        except:
            nothing
        try:
            update = up.read()
            isnew = update.find('downloader_'+nextversion)
        except:
            nothing
        
        if isnew != -1:
            MyThread.newupdate = 1
        MyThread().start()
und ganz unten am Ende des ganzen Skripts wird dann die Variable "MyThread.newupdate" abgefragt, und wenn sie "1" ist, wird eben angezeigt, dass ein neues Update verfügbar ist..

Re: NETLOG Profilbild Download-Manager

Verfasst: Donnerstag 3. Juni 2010, 12:35
von Dav1d
Aua,

Code: Alles auswählen

MyThread().start()
Mach lieber eine while-Schleife ausen rum, oder belasse es bei einem Update-Check beim Programmaufruf

Code: Alles auswählen

UPDATEURL = "https://sourceforge.net/projects/netlogdownload/files/"
nextversion =  "0.9.2"

class UpdateChecker(threading.Thread):
    def __init__(self):
         self.newupdate = False
         self.setDaemon(True)

    def run (self):        
        while True:
            with contextlib.closing(urllib2.urlopen(UPDATEURL)) as up:
                context = up.read()
                if 'downloader_'+nextversion in context:
                    self.newupdate = True
            time.sleep(15)
nextversion ist auch nicht gerade schön...
Wenn man ein Update verpasst, was dann?