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.
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 ?
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..
@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.
@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 ?
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 ?
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..
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?
Dav1d hat geschrieben:
nextversion ist auch nicht gerade schön...
Wenn man ein Update verpasst, was dann?
naja, wenn man ein update verpasst is das zb so:
-man hat version 0.8
-version 0.9 wird verpasst
-aktuelle version: 1.0
____
wenn man jetzt die 0.8er startet, wird ja sowieso nur auf die allgemeine sourceforge.net seite verwiesen, wo dann automatisch die neueste version ganz oben steht !