Programm starten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Programm starten

Beitragvon Python 47 » Donnerstag 30. März 2006, 13:38

Hi Leuts,

ich hab da mal ne frage, wie kann ich es bewerkstelligen, das ich z.B. einen Zähler i initialisiere und der Zähler i bei jedem Start meines Programmes um 1 inkremmentiert wird?

Danke!
mfg

Thomas :-)
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 30. März 2006, 13:56

Zum Beispiel so:

Code: Alles auswählen

COUNTERFILE = "/tmp/counter"

def ReadCounter():
  try:
    counter = int(open(COUNTERFILE,  "r").readline())
  except:
    counter = 1
  return counter

def WriteCounter():
  counter = ReadCounter()
  open(COUNTERFILE, "w").write(str(counter+1))

def main():
  import atexit
  atexit.register(WriteCounter)
  print "Programm wurde",ReadCounter(),"mal gestartet!"

if __name__ == "__main__":
  main()
Du kannst es natürlich auch mit Pickle oder cPickle abspeichern, das dürfte in diesem Falle aber Overkill sein
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Donnerstag 30. März 2006, 14:36

Danke für das Programm, aber das ist nicht ganz das was ich suche!Ich suche eher sowas, das ich sowas machen kann:

Code: Alles auswählen

if aufrufe=='10':
   mache das und das


Auserdem ist der Code ziehmlich lang, gibt es da nicht was einfacheres?

Danke!
mfg



Thomas :-)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Donnerstag 30. März 2006, 15:13

Python Master 47 hat geschrieben:Auserdem ist der Code ziehmlich lang, gibt es da nicht was einfacheres?

Hi!

:shock: Etwas Einfacheres als die Anzahl der Aufrufe in eine Datei zu schreiben und dann wieder auszulesen wirst du wohl kaum finden. :twisted:

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Donnerstag 30. März 2006, 17:25

Nee mit einfacher meinte ich eher, eine Funktion eines Moduls, die das macht damit der Code kürzer wird!
mfg



Thomas :-)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 30. März 2006, 17:54

Python Master 47 hat geschrieben:Nee mit einfacher meinte ich eher, eine Funktion eines Moduls, die das macht damit der Code kürzer wird!

Klar, kein Thema:

Code: Alles auswählen

import countstart
countstart.increase_count()


Anzumerken ist, dass du dieses Modul brauchst:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-

import pickle
countfile = 'count.pickle'

def get_count():
    try:
        stream = file(countfile, 'r')
        count = pickle.load(stream)
        stream.close()
        return count
    except IOError:
        return 0

def increase_count(times=1):
    count = get_count()
    count += times
    stream = file(countfile, 'w')
    pickle.dump(count, stream)
    stream.close()
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Donnerstag 30. März 2006, 17:56

Dann hab ich aber wieder so einen langen Code! :cry:
mfg



Thomas :-)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 30. März 2006, 17:59

Python Master 47 hat geschrieben:Dann hab ich aber wieder so einen langen Code! :cry:

ModelNines Code ist 21 Zeilen Lang, meine ist 23 Zeilen (man könnte beide Lösungen noch kürzer machen, aber wir haben uns bemüht, das schön zu schreiben, nicht kurz). Das ist aber echt nicht viel.
Alternativ vergisst du es und du hast die kürzeste Lösung, mit 0 Zeilen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Donnerstag 30. März 2006, 18:22

Sorry sollte nicht undankbar wirken!

Danke nochmal für die Codes!
mfg



Thomas :-)
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Donnerstag 30. März 2006, 23:30

ModelNines Code ist 21 Zeilen Lang...


Only give credit where it's due, ich hab das erste Beispiel nicht geschrieben sondern Joghurt. ;-)

Aber sonst: unter Windows würde mir noch einfallen das ganze irgendwo in der Registry zu speichern, aber im Endeffekt ist das auch nix anderes als es so in eine externe Datei zu schreiben. Und braucht ähnlich viel Code... :-)
--- Heiko.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 30. März 2006, 23:53

Mein Code ist übrigens auch schon als Modul geschrieben...
Deshalb mein ganz heißer Tipp: Editor öffnen, Copy-and-Paste, fertig. Das sind dann 4 oder 5 Mausklicks. Ich stelle den Code sogar in die Public Domain.

Python Master, wenn dir 20 Zeilen zu viel sind, wirst du niemals über ein "Hallo, Welt" Programm hinauskommen...
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Freitag 31. März 2006, 16:22

Joghurt hat geschrieben:Python Master, wenn dir 20 Zeilen zu viel sind, wirst du niemals über ein "Hallo, Welt" Programm hinauskommen...


lol, darum geht es doch gar nicht!Ich hab einige Programme mit 100-200 Zeilen Code aber ich dachte, das es für so eine simple Aufgabe ziehmlich viel
Code ist!

Es hätte ja sein können, das es mit einer Funktion eines Modules einfacher geht!
mfg



Thomas :-)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder