Seite 1 von 1

Programm starten

Verfasst: Donnerstag 30. März 2006, 13:38
von Python 47
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!

Verfasst: Donnerstag 30. März 2006, 13:56
von Joghurt
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

Verfasst: Donnerstag 30. März 2006, 14:36
von Python 47
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!

Verfasst: Donnerstag 30. März 2006, 15:13
von gerold
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
:-)

Verfasst: Donnerstag 30. März 2006, 17:25
von Python 47
Nee mit einfacher meinte ich eher, eine Funktion eines Moduls, die das macht damit der Code kürzer wird!

Verfasst: Donnerstag 30. März 2006, 17:54
von Leonidas
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()

Verfasst: Donnerstag 30. März 2006, 17:56
von Python 47
Dann hab ich aber wieder so einen langen Code! :cry:

Verfasst: Donnerstag 30. März 2006, 17:59
von Leonidas
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.

Verfasst: Donnerstag 30. März 2006, 18:22
von Python 47
Sorry sollte nicht undankbar wirken!

Danke nochmal für die Codes!

Verfasst: Donnerstag 30. März 2006, 23:30
von modelnine
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... :-)

Verfasst: Donnerstag 30. März 2006, 23:53
von Joghurt
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...

Verfasst: Freitag 31. März 2006, 16:22
von Python 47
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!