so ein nonsens

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
Gast

hi zusammen!

folgende funktion, soll die zeit der letzten änderung aller dateien zurückgeben , die im verzeichnis gefunden werden.

Code: Alles auswählen

def checklastuse_all(url):
    import os
    result=[f for f in os.listdir(url) if f.endswith('.htm')]
    for i in result:
        timeresult=os.path.getmtime(url+i)
        print i, timeresult
ausschnitt aus dem ergebnis:

Code: Alles auswählen

php.htm 1080688457
quellen.htm 1082477946
studie.htm 1080666462
test.htm 1071824640
testbspjs2.htm 1071824640
vorlage.htm 1071824640
vorlageb.htm 1071824640
vorwort.htm 1075027200
wygiwym.htm 1071824640
wysiwyg.htm 1071824640

die zahlen sollen angeblich sekunden sein, dividiert durch 3600 kommen so fantastische werte raus wie z.b 

Code: Alles auswählen

>>> 1071824640 / 3600
297729
kann ja nur ein unsinn sein.

was läuft da also falsch?

mfg

rolgal
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi. Nur kurz eine Frage: du hast noch nie groß mit Zeit und Datum in Python gearbeitet, oder? :lol: Net böse verstehen, aber das sind timestamps in Sekunden und repräsentieren nicht die Zeit seit der letzten Änderung, sondern die Zeit der letzten Änderung in Sekunden seit der Epoche (1.1.1970 00:00 UTC). Im Modul time findest du viele Funktionen um damit zu rechnen, z.B. gmtime, localtime, mktime, strftime, etc... aber Vorsicht: Umwandlungen zwischen Sekunden und zugehöhrigen Datum/Uhrzeit haben aufgrund Sommerzeit und localer Ortszeit ihre Tücken...

Milan
Gast

hi milan!

aha! na gut, wofür das auch immer gut sein soll.

wie rechne ich das ergebnis um, um zu dem gewünschten ergebnis zu kommen?

mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi rolgal,

welches Ergebnis ist erwünscht?


Gruß

Dookie
Gast

hallo dookie!

ich will eben die zeit seit der letzten änderung in stunden,

z.b. datei x wurde vor 2 stunden geändert.

aha, die selbe datei im archiv wurde aber vor 48 stunden geändert.

du erinnerst worüber wir heute geredet haben, oder?

, sondern die Zeit der letzten Änderung in Sekunden seit der Epoche (1.1.1970 00:00 UTC).
wofür soll das denn gut sein. ich versteh es nicht mal so sinnlos erscheint es mir!

aber ich steh wohl am schlauch.


:D :D

mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi rolgal,

du willst also wissen wieviel Zeit seit der letzten Änderung vergangen ist, und nicht die den Zeitpunkt der letzten Änderung!
Das ist ein Riesen Unterschied oder nicht ;)

Code: Alles auswählen

def checklastuse_all(url):
    import os, time
    result=[f for f in os.listdir(url) if f.endswith('.htm')]
    for i in result:
        timeresult=int(time.time()-os.path.getmtime(url+i))
        print i, timeresult/3600 

Gruß

Dookie
----------
Zeit ist eben relativ ;)
Gast

hi dookie!

ich lass mich jetzt lieber nicht auf eine diskussion bez. zeit ein.

zeit war mir immer schon ein rätsel, bis auf die tatsache, dass ich zu wenig davon habe.

wenn du genug davon haben solltest, könntest du doch noch mal das ganze näher erläutern :D :D

danke einstweilen

mfg

rolgal
Gast

hi nochmal!

allesklar, hat geklingelt, laut und deutlich,...

danke nochmal

mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi rolgal,

ansonst könnte ich dir auch noch folgendes Buch empfehlen:
Die illustrierte Kurze Geschichte der Zeit von Stephen W. Hawking ;)

Gruß

Dookie
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

rolgal hat geschrieben:
, sondern die Zeit der letzten Änderung in Sekunden seit der Epoche (1.1.1970 00:00 UTC).
wofür soll das denn gut sein. ich versteh es nicht mal so sinnlos erscheint es mir!
Hi. Soweit ich weiß, ist das historisch bedingt, denn irgend einen Standart um Zeitdaten zu speichern brauch man nunmal. Und der ist nun mal die Zeitzählung in Sekunden seit da. Ob es nun 1970 oder sonstwann war ist doch egal, wichtig ist, dass ein konkreter Wert festgelegt wurde. Mit gmtime bzw localtime kannst du das zu einem Zeittupel umrechnen lassen (schau dir am besten mal die Doku dazu an) und mit strftime das ganze in einem beliebigen Format ausgeben. strptime ist übrigens das genaue Gegenteil: von einem beliebigen Format (string) in ein Zeittupel umrechnen.

Milan
Gast

hi milan!

danke nochmal für die erklärung, aber es ist mir jetzt schon klar.

bei der funktion

Code: Alles auswählen

getmtime
hätte man das vielleicht doch gleich anders lösen können.

was anderes an der stelle:

wollte nur mal sagen, dass ich offensichtlich nicht mehr über alle antworten informiert werde.
ich habe diese antwort von dir nur zufällig gesehen.

mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi rolgal,
hätte man das vielleicht doch gleich anders lösen können.
und wie?


Gruß

Dookie
Gast

hi dookie!

indem mir die funktion gleich das zurückgibt was ich wollte.

dann müsste sie wohl aber anders heissen.

wenn es funktionen gibt, die uns gleich einen nützlichen zeitwert ausgeben, warum sollte das dann hier net gehen?

mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi rolgal,

die Funktionen von Python haben ihre Entsprechungen in einer lib für c. Auch dort gibt gmtime den Wert in Sekunden seit dem 1.1.1970 aus. Hat auch seinen Sinn, so kann Code einfacher von einer Sprache in die Andere portiert werden.
Woher sollten die Entwickler von Python wissen, was du gerne hättest das die Funktion zurückgibt?


Gruß

Dookie
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

rolgal hat geschrieben:wenn es funktionen gibt, die uns gleich einen nützlichen zeitwert ausgeben, warum sollte das dann hier net gehen?
Hi. Ich glaube jetzt hast du dich verzettelt... Mach mal ein Beispiel für einen nützlichen Zeitwert, mit dem du dann alles genauso gut anstellen kannst, wie jetzt.

Milan
Gast

hi!

Code: Alles auswählen

gmtime()

Code: Alles auswählen

localtime()
geben wohl was anderes zurück :?: :?:

es wäre daher wohl möglich eine funktion zu implementieren, die mir gleich den zeitpunkt der letzten änderung einer datei zurückgibt.

ohne dass ich das umrechnen muss.

mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

warum? Die Funktion gibt dir doch den Zeitpunkt zurück.
Du wolltest aber wissen wieviel Zeit seit der letzten Änderung verstrichen ist. Und das lässt sich ja nun wirklich leicht ausrechnen wie in meinem Beispiel gezeigt. Es hindert Dich ja auch keiner dafür eine Funktion "age_of_file" zu schreiben.


Gruß

Dookie
Gast

hi

den zeitpunkt, den sie mir zurückgibt interessiert mich nicht. sondern eben um genau zu sein: die zeit die vergangen ist seitdem zeitpunkt der letzten änderung bis zum aktuellen zeitpunkt,

man hätte das gleich implementieren können, was habt ihr mit meiner aussage für ein problem.

ich habe ja nicht gesagt, dass sie so wie sie ist völlig wertlos ist. für mich subjektiv in dem fall ja, und objektiv weil ich es zuerst net geschnallt habe.

natürlich ist es nicht schwierig, wie du in dem bsp. gezeigt hast.

mfg

rolgal
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

rolgal hat geschrieben:man hätte das gleich implementieren können, was habt ihr mit meiner aussage für ein problem.
Hi. hätte, wenn und aber :wink: :lol: Es passt einfach nicht ins Pythonkonzept. Würde man das nämlich bei allen Sachen so machen, hätte man irgendwann PHP, wo es für jeden kleinen Furz (sorry) eine built-in Funktion gibt. Die Grundlagen existieren ja, es ist die Sache des Programmieres etwas daraus zu machen.
rogal hat geschrieben:natürlich ist es nicht schwierig, wie du in dem bsp. gezeigt hast.
Na also. Dafür ist der Wert nämlich unter anderem in Sekunden, damit man damit schnell rechnen kann. Umrechnen in Daten nimmt dir ja Python schon wieder ab.

Milan
Antworten