Werte Speichern

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.
Antworten
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Hallo,

ich möchte das aktuelle Datum mit Uhrzeit für verschiedenen Ordner benutzen.
Ich erstelle vier Textdateien mit jeweils diesen aufruf.

b= time.strftime(%d%m%Y%H%M%S)
a=open("c:\....\%s hallo" %b, "a"

Das ist jetzt der Name der Datei.

Diese Datei erstell ich 4 mal und möchte aber immer die selbe Zeit haben.
Das mit der Zeit ist wichtig damit ich die erstellten Datei Unterscheiden kann.

Danke und Gruß
BlackJack

@Campionissimo: Dann darfst Du `b` halt für alle vier Dateien nur einmal berechnen und nicht für jede Datei neu.
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Wahrscheinlich eine ganz blöde frage wie soll das gehen ?
Jedes mal wenn ich b aufrufe kommt ein anderes Zeitformat
BlackJack

@Campionissimo: Du darfst halt für alle vier Dateien die Zeit nur einmal ermitteln und nicht für jede. Mehr kann man da so nicht zu sagen. Wie das geht? Man ermittelt die Zeit nur einmal und nicht viermal.

`b` wird übrigens nicht aufgerufen, das ist an eine Zeichenkette gebunden.
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Campionissimo hat geschrieben:Jedes mal wenn ich b aufrufe kommt ein anderes Zeitformat
Eher nicht.

Code: Alles auswählen

b = time.strftime(%d%m%Y%H%M%S)
print b
print b
print b
Da bekommst du unterschiedliche Ausgaben?
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

oh, mann ich bin so b......
Die Zeit hat sich ja gar nicht mehr verändert.
Hab nur vergessen die Zeit sdie in b steht zu übergeben;)
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Aber ich hätte noch was anderes, wo ich schon länger probs hab.
In einem Modul ist eine Variable i.
Diese ist in einer if Bedingung drin.
D.h. jedes mal wenn ich in die If bedingung rein komm. wird i erhöht.

Jetzt möchte ich diese aktuelle variable in der if Bedingung an ein anderes Modul übergeben.
Ich springe auch schon von dieser Position im Code zu dem anderen Modul.
ungefähr so:

a=thread_Modul1.run()
Modul1 ist das Modul
und run(9 eine def wo ich das mit dem i bearbeiten möchte.

Hab das ganze schon über Import der variablen probiert oder über meinen thread.

wie könnt das gehen
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Sorry, aber mit dieser Problembeschreibung wird das nix, das versteht ja kein Mensch.

Code: Alles auswählen

... Ich springe auch schon von dieser Position im Code ...
Basic? GOTO 10? :mrgreen:
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Hmm, bin mir nicht sicher, ob ich Dich richtig verstehe, aber ich könnte mir vorstellen, dass Du das mit einer Klasse erreichen kannst. Module sind IMHO nicht der geeignete Ort zur Ablage veränderlicher Daten und deren Weiterreichung.

Code: Alles auswählen

class Count(object):
    def __init__(self):
        self.counter = 0

    def count_up(self, number):
        self.counter += number

    def count_down(self, number):
        self.counter -= number

In [85]: c = Count()

In [86]: c.count_up(10)

In [87]: c.counter
Out[87]: 10

In [88]: c.count_down(5)

In [89]: c.counter
Out[89]: 5
Natürlich könnten in dieser Klasse auch if-Abfragen stattfinden, innerhalb derer Du Werte definierst/änderst. Die Methoden 'count_up()' und 'count_down()' sollen dafür nur ein Beispiel sein.

Das Exemplar 'c' kannst Du nun wohin auch immer weiterreichen und dort den Wert 'counter' abfragen.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Ja, so ungefähr hast du Recht. Du überschreibst immer die 0 indem du einen int addierst.

Ich möchte es mit zwei threads machen und einen der das ganze verbindet.

Code: Alles auswählen

a = Thread_a.Threada()
b = Thread_b.Threadb(a.time, a.timedaten)
a.start()
b.start

Das soll die Verbindung zwischen den Threads sein

hier Thread_a

Code: Alles auswählen

class Threada(threading.Thread):

       def __init__(self, timedaten):
            self.timedaten = timedaten
            threading.Thread.__init__(self)

       def run(self):

            fzeit = int(time.strftime(%d%m&Y%H%M%S)
            zeit1=Threada(fzeit)

hier der Thread b

Code: Alles auswählen


class Threadb(threading.Thread):
        def __init__(self,fzeit):
            self.fzeit=fzeit
            threading.Thread.__init__(self)

        def run():
            print self.zeit
Also ich möchte die Zeit im Threada generieren und dann über mein main thread an den thread b übergeben und benutzen.
Es soll kein fester Wert sein. Sonst würde ich in der __init__ die Zeit zuweisung machen.

Weiß wer was wie das geht.

Glaub der compiler meckert ich habe 2 argumente, aber es ist nur 1 da.

Vielen Dank und Grüße
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Campionissimo hat geschrieben:

Code: Alles auswählen

a = Thread_a.Threada()
b = Thread_b.Threadb(a.time, a.timedaten)
a.start()
b.start
Tu dir uns uns den Gefallen und erstelle zumindest ein lauffähiges Beispiel. Daran kannst du dann erklären was du möchtest. Zur Zeit ist, zumindest meinerseits, Raten angesagt. Vielleicht suchst du Queues?

Verwende hier bitte beim Posten von Sourcecode Python-Code-Tags, dann lässt sich das besser lesen.
Campionissimo
User
Beiträge: 102
Registriert: Montag 28. März 2011, 07:50

Ich habs jetzt hinbekommen.
ich wollte ja vom Threada (Uhrzeit) über Threadhaupt an den Threadb weitergeben. Aber keinen festen Wert sondern einen immer wieder aktualisierenden Wert.
Hab jetzt den threada bescheid gegeben, dass es noch einen Threadb gibt. Und es funzt, aber das Ergebnis ist nicht so gut, da ich einen Zeitverzögerung drin hab von 2-3 sec. Und wenn ich das öfter mach bekommt man schöne Sachen, absturz usw.
D.h. mehrere veränderbare Variablen übergeben.

Aber mit queue haste recht das funzt auch. Kann mann eigentlich mehrere queue machen ?
Also das ganze Szenario initalisieren und übergeben mit einer zweiten Queue.

Oder übergibt man nur mehr Parameter ?

Gruß
Antworten