PDF Datei mit aktuellem Datum

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
radioflyer

Hallo Gemeinde,

ich bin der Neue und wühle mich durch die Pythondetails, so lernt man es, aber ich verzweifel an einem Anfängerproblem.

Aufgabe: eine PDF Datei aus dem Web laden, die dort jeden Tag mit "Bezeichnung-2016-02-06.pdf" liegen soll. Das habe ich in AUTOIT3, aber
nun muss das auf den Pi, dass der das Nachts schön selber macht.

Aber "Bezeichnung-", das "-" und ".pdf" sind string. Wie klatsche ich das 2016 02 06 (inkl. führender Null) dazwischen?
Mit import time, Tupels entpacken und Join und gedöns - ich raff es nicht... :K

Wäre sehr für nen Tipp dankbar

Cheerz, RF
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

@radioflyer: schau Dir mal das datetime-Modul an.
radioflyer

Sirius3 hat geschrieben:@radioflyer: schau Dir mal das datetime-Modul an.
damit hatte ich angefangen :-)
Ähnlicher Fehler: cannot concatenate str und datetime.date objects

Also, zurück auf Start...

cu
BlackJack

@radioflyer: Dann vielleicht nicht nur zum `datetime`-Modul, sondern auch dessen Dokumentation. Schau mal was für Methoden es da so gibt und was die tun. Beispiele gibt's da auch.
radioflyer

BlackJack hat geschrieben:@radioflyer: Dann vielleicht nicht nur zum `datetime`-Modul, sondern auch dessen Dokumentation. Schau mal was für Methoden es da so gibt und was die tun. Beispiele gibt's da auch.
klaro, das gehört dazu, aber ich hab es - wenn man richtig sucht ist es dann auch einfach:

from datetime import date
heute = date.today()
heute.strftime("%y-%m-%d")
url = url1 + str(heute) + urle

Was fehlte: str(...)

Danke für den Tipp!

cheers, RF
BlackJack

@radioflyer: Ist allerdings keine schöne Lösung weil `str()` und ``+`` zum zusammenstückeln von Zeichenketten und Werten eher BASIC als Python ist. In Python gibt's Zeichenkettenformatierung für so etwas. Und die Zeile mit dem `strftime()`-Aufruf ist sinnfrei, die kann weg.
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

@radioflyer:

Code: Alles auswählen

"Bezeichnung-{0:%y-%m-%d}.pdf".format(date.today())
radioflyer

Sirius3 hat geschrieben:@radioflyer:

Code: Alles auswählen

"Bezeichnung-{0:%y-%m-%d}.pdf".format(date.today())
da das nur 16 als Jahr zurückgibt habe ich Bezeichnung-20 hingefrickelt, meine Urenkel werden es mir nachsehen.
Sieht professioneller aus, tut aber aktuell nicht :| aber nach ein wenig frischer Luft wird das schon :lol:

Schlimm finde ich aber bei der urllib2 das Zielverzeichnis für die Datei anzugeben, war mit urllib einfacher, gerade hinter die url, verz_dateiname
dann aber leider mit komplizierter Error404 (die Datei ist schonmal nicht geschrieben worden) Abfrage.

naja, aber vielleicht auch der Sauerstoffmangel.

erstmal vielen Dank

RF
Benutzeravatar
kbr
User
Beiträge: 1508
Registriert: Mittwoch 15. Oktober 2008, 09:27

radioflyer hat geschrieben:da das nur 16 als Jahr zurückgibt habe ich Bezeichnung-20 hingefrickelt
Auch hier hilft die Dokumentation weiter:

"Bezeichnung-{0:%Y-%m-%d}.pdf".format(date.today())
BlackJack

@radioflyer: Für den HTTP-Kram würde ich das `requests`-Package verwenden. Das hat die wesentlich schönere API und die ist auch bei Python 2 und 3 gleich.
radioflyer

kbr hat geschrieben:
radioflyer hat geschrieben:da das nur 16 als Jahr zurückgibt habe ich Bezeichnung-20 hingefrickelt
Auch hier hilft die Dokumentation weiter:

"Bezeichnung-{0:%Y-%m-%d}.pdf".format(date.today())
habe ich gesehen, aber ich denke das passt schon. Wenn das ein Thema wird, bin ich an der Steinplatte von Petrus durch,
oder brutzel mit dem Windows Entwicklern in der Hölle... ;-)
radioflyer

BlackJack hat geschrieben:@radioflyer: Für den HTTP-Kram würde ich das `requests`-Package verwenden. Das hat die wesentlich schönere API und die ist auch bei Python 2 und 3 gleich.
ja, da bin ich dran. Ich brauche irgendwie urllib1,5 - urllib2 ist beim laden sinniger, und urllib hab ich den Error 404
gleich kapiert - die Situation ist aber schon wesentlich verbessert, und dank eurer Hilfe kommt ja schon was :-)

Schönen Sonntag allen

RF
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

@radioflyer: ich denke, das passt nicht. umständlich eine fehleranfällige 20 irgendwo einfügen soll besser sein, als ein kleines in ein großes Y zu verwandeln?
radioflyer

Sirius3 hat geschrieben:@radioflyer: ich denke, das passt nicht. umständlich eine fehleranfällige 20 irgendwo einfügen soll besser sein, als ein kleines in ein großes Y zu verwandeln?
@siri also wenn schon pingelig, dann richtig: wenn ich das mache, kommt Bezeichnung-202016-xxxxx raus. Die Datei findet er aber nicht :-)

Ich habe es dokumentiert, dass es in 84 Jahren knallt :-) - so wie Y2K

Die Datei wurde aber heute morgen zugestellt und eine Email bekam ich auch von dem Teil. Für 4h Python als Sesselpuper nicht schlecht.

Nicht alles so verbissen sehen (Sprichwort aus dem Rheinland: et kütt wie et kütt) - ausserdem bin ich noch an dem Fall dran, dass 404 nicht
abgefangen wird, aber das Wochenende war wieder zu kurz.

cheerz, RF
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

radioflyer hat geschrieben:
Sirius3 hat geschrieben:@radioflyer: ich denke, das passt nicht. umständlich eine fehleranfällige 20 irgendwo einfügen soll besser sein, als ein kleines in ein großes Y zu verwandeln?
@siri also wenn schon pingelig, dann richtig: wenn ich das mache, kommt Bezeichnung-202016-xxxxx raus. Die Datei findet er aber nicht :-)
Natürlich kommt dann 202016 raus wenn du die 20 noch hardcoded in deinem string hast...
Das hat aber auch nichts mit pingelig zu tun sondern mit Code Qualität. Du bekommst für weniger Aufwand die bessere Lösung, warum dann das Umständliche und Schlechte machen? Um es in Zukunft auch nicht zu verwenden :evil: ?
the more they change the more they stay the same
radioflyer

[quote="Dav1d]Du bekommst für weniger Aufwand die bessere Lösung, warum dann das Umständliche und Schlechte machen? Um es in Zukunft auch nicht zu verwenden :evil: ?[/quote]

Kinders, wie beschrieben bin ich an dem HTTP Error in meiner Freizeit dran, und wenn wesentliche Features in einem Programm noch nicht laufen, dann bücke ich mich doch nicht nach den Bröseln. Das eingesetzte Programm ist sauber, die Testvarianten nicht - so what :| . Außerdem hat das nix mit schlechter Laune zu tun, sondern eher mit fehlendem Humor :evil: . Und damit würde ich das hier gerne abschließen, ich nutze die Zeit lieber um den Code zu verbessern - habe ich in 32 Jahren IT nie anders gemacht. Aber der Humor muss ja nicht auf der Strecke bleiben. :wink:

Nochmals Danke für die Hilfe im Coding.
BlackJack

@radioflyer: Also die Begründung den Code nicht zu verbessern ist, dass Du die Zeit lieber nutzt um den Code zu verbessern? Und Du sträubst Dich hier gegen eine Änderung die wirklich supereinfach und superschnell gemacht ist, mit mehreren Beiträgen, die ein vielfaches der benötigten Zeit verschlungen haben dürften‽ Na Du hast Humor…
radioflyer

BlackJack hat geschrieben:@radioflyer: Na Du hast Humor…
JEP! - alle Verbesserungen gehen am Schluss in das finale Programm (aus 1.0 wird 2.0)

Halte ich für normal, aber es scheint hier viel Spaß zu machen "Stimmung" zu verbreiten, brauche ich nicht.
Ich melde mich hier wieder ab.
Benutzeravatar
pillmuncher
User
Beiträge: 1530
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@radioflyer: Du scheinst zu glauben, es drehe sich bei dieser Diskussion um dich. Tatsächlich geht es aber um diejeingen, die deinen - schlechten - Code sehen und - weil sie noch wenig oder keine Erfahrung haben - glauben, erfahrene Programmierer ("habe ich in 32 Jahren IT nie anders gemacht") so programmieren sollten, wie du es zeigst. Um diese jungen Menschen vor einem großen Irrtum zu bewahren, darum wird dein Code hier kritisiert.
In specifications, Murphy's Law supersedes Ohm's.
Antworten