print-problem o.O

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.
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

ja das wollte ich eig noch löschen hm danke für info.
BlackJack

@bluelagoon: Also einige Sätze von Dir kann ich überhaupt nicht verstehen. Die sind einfach nur wirr.

Ein ``==`` statt eines ``<`` ändert nichts daran, dass Du da inkompatible Typen miteinander vergleichst:

Code: Alles auswählen

In [736]: not '23' == 42
Out[736]: True

In [737]: not '42' == 42
Out[737]: True
Eine Zeichenkette wird *immer* ungleich einer ganzen Zahl sein, völlig unabhängig von den konkreten Werten. Der ``else``-Zweig dort wird *niemals* ausgeführt werden.

Statt des ``not`` könnte man hier übrigens tatsächlich ``!=`` als Vergleichsoperator verwenden.
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

BlackJack es geht nur darum das dieses Skript ausgeführt wird WENN ein datum drin steht sonst wird dieses skript nicht ausgeführt ^^ wenn dort steht 5 D ewig nix,
dann wird auch nix gemacht nur wenn dort steht 5D 23.04.2010 dann wird gesichert :).
und dann muss localtime bis zu dem 23.04.2010 sichern.
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

mir is schon iwo klar das int un string 2 verschiedene Daten sind aber wie soll ich ein Datum umwandeln in string?-.-
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

Mit strftime kann eine Zeittupel in einen String formatiert werden.

das hab ich auch gemacht.

hinzugefügt:
lt = localtime()
str(strftime("%d.%m.%Y", lt))
print strftime("%d.%m.%Y", lt)

lieg ich jetzt immer noch falsch oder hab ichs nun richtig formatiert x.x
busfahrer
User
Beiträge: 111
Registriert: Donnerstag 9. Oktober 2008, 17:42

@bluelagoon: "strftime" gibt doch schon einen String zurück.Du musst doch keinen String in einen String umwandeln.

Code: Alles auswählen

>>> lt = time.localtime()
>>> st = time.strftime("%d.%m.%y", lt)
>>> st
'24.09.10'
>>> type(st)
<type 'str'>
Gruß...busfahrer
Alles wird gut ;-)
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

ja ich habs grad irgendwie auch gemerkt aber ich muss das Datum der Datei die in der Datei steht in ein string umwandeln
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

bluelagoon hat geschrieben:ich hör immer nur Kritik Kritik.
Na, dafür postest du doch hier: Um etwas zu lernen! Und das geht halt nur, wenn du die Grundlagen (zumindest halbwegs) verstanden hast und dir selbst Gedanken machst. Wenn dir Lösungen vorgekaut werden, ist der Lerneffekt ziemlich gering.
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

naja ich komm oft auf die Lösungen auch wenn ich dafür nen Gedankenstoß brauch -.-
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

bluelagoon hat geschrieben:naja ich komm oft auf die Lösungen auch wenn ich dafür nen Gedankenstoß brauch -.-
Und verwendest immer noch os.system() - obwohl Dir das subprocess-Modul nahe gelegt wurde und Du es sogar importierst!

Naja, und wenn Du Dich mal mit Funktionen beschäftigt hättest, wäre Dein Code auch nicht mehr so Spagettihaft und lesbarer. Zudem würdest Du Dich bei der Benutzung fremder Funktionen leichter tun.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

os.system wird verwendet für den tar_befehl ...
jetz mal was anderes... warum soll ich das umändern wenn ich das mit os machen kann?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Steht in der Doku:
The subprocess module provides more powerful facilities for spawning new processes and retrieving their results; using that module is preferable to using this function. Use the subprocess module. Check especially the Replacing Older Functions with the subprocess Module section.
Desweiteren bringt es Dir ja nichts Module zu importieren, die Du dann nicht verwendest.

Und Du könntest Deinen Code durchaus in Funktionen gliedern und diesen if...elif...else-Dispatching Code wegwerfen bzw. verschlanken.

Es ist ungemein hilfreich, unterschiedliche Funktionalität auch in verschiedene Funktionen zu packen. Das hilft bei der allg. Strukturierung Deines Codes und auch für eine gute Wiederverwendbarkeit.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

naja wie dem auch sei -.- zurück zum Thema


wie splite ich eine Datei so das ich nur eine Einzelne Zahl bekomme?

z.b.
Text
Variable=4T
ich brauch nur die Zahl kann man das irgendwie Trennen vom T?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

bluelagoon hat geschrieben:naja wie dem auch sei -.- zurück zum Thema


wie splite ich eine Datei so das ich nur eine Einzelne Zahl bekomme?

z.b.
Text
Variable=4T
ich brauch nur die Zahl kann man das irgendwie Trennen vom T?
Gibt viele Möglichkeiten; eine gute Möglichkeit wäre ein RegExp. Schau Dir einfach mal die Doku zum re-Modul an.

Desweiteren: Ich würde an Deiner Stelle nicht so ignorant und bockig reagieren. Die Tipps und Hinweise bezüglich Dinge, die nicht direkt und unmittelbar mit Deiner Frage zusammen hängen, werden hier nicht ohne Grund gegeben!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

wenn du meinst Hyperion.
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

python dp_cron.py
Traceback (most recent call last):
File "dp_cron.py", line 9, in <module>
str=(strftime("%d.%m.%Y",Zeit))
TypeError: argument must be 9-item sequence, not str

Code: Alles auswählen

lt = localtime()
datei = open ("test.ini","r")
Zeile = datei.readlines()
Zeit=Zeile[1].strip().split(" ")[1]
str=(strftime("%d.%m.%Y",Zeit))
datei.close()
print strftime("%d.%m.%Y",Zeit)
die Zeit in der Datei is aber kein String.
BlackJack

@bluelagoon: Doch ist sie. Was sollte sie sonst sein!?
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

warum lässt sich dann komischer weise die Zahl nicht mit strptime umwandeln oder mit str = strftime etc ? irgendwie muss ich DEN ........ doch endlich umwandeln können -.-
bluelagoon
User
Beiträge: 216
Registriert: Mittwoch 25. August 2010, 12:26

BlackJack hat geschrieben:@bluelagoon: Doch ist sie. Was sollte sie sonst sein!?
jetz weis ich was du falsch verstanden hast...
ich hab in einer Datei ein Datum dieses wird vom server geschrieben
da steht drin

Variable=5D 23.04.2010 als beispiel
das heisst wenn 5 drinsteht sichern von Heut bis zum Datum in der Datei. also das Datum in der Datei ist kein String aber die variable lt ist zum String geworden.
das heisst wenn ich lt so stehn lass ist lt auch kein string und dann müsste es doch klappen oder nicht?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

bluelagoon hat geschrieben:warum lässt sich dann komischer weise die Zahl nicht mit strptime umwandeln oder mit str = strftime etc ?
Die beiden Funtkionen machen ja auch extrem unterschiedliches... wozu da das "oder"?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten