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
PDF Datei mit aktuellem Datum
damit hatte ich angefangenSirius3 hat geschrieben:@radioflyer: schau Dir mal das datetime-Modul an.

Ähnlicher Fehler: cannot concatenate str und datetime.date objects
Also, zurück auf Start...
cu
@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: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.
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
@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.
@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.Sirius3 hat geschrieben:@radioflyer:Code: Alles auswählen
"Bezeichnung-{0:%y-%m-%d}.pdf".format(date.today())
Sieht professioneller aus, tut aber aktuell nicht


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
@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.
habe ich gesehen, aber ich denke das passt schon. Wenn das ein Thema wird, bin ich an der Steinplatte von Petrus durch,kbr hat geschrieben:Auch hier hilft die Dokumentation weiter:radioflyer hat geschrieben:da das nur 16 als Jahr zurückgibt habe ich Bezeichnung-20 hingefrickelt
"Bezeichnung-{0:%Y-%m-%d}.pdf".format(date.today())
oder brutzel mit dem Windows Entwicklern in der Hölle...

ja, da bin ich dran. Ich brauche irgendwie urllib1,5 - urllib2 ist beim laden sinniger, und urllib hab ich den Error 404BlackJack 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.
gleich kapiert - die Situation ist aber schon wesentlich verbessert, und dank eurer Hilfe kommt ja schon was

Schönen Sonntag allen
RF
@siri also wenn schon pingelig, dann richtig: wenn ich das mache, kommt Bezeichnung-202016-xxxxx raus. Die Datei findet er aber nichtSirius3 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?

Ich habe es dokumentiert, dass es in 84 Jahren knallt

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
Natürlich kommt dann 202016 raus wenn du die 20 noch hardcoded in deinem string hast...radioflyer hat geschrieben:@siri also wenn schon pingelig, dann richtig: wenn ich das mache, kommt Bezeichnung-202016-xxxxx raus. Die Datei findet er aber nichtSirius3 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?
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

the more they change the more they stay the same
[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
?[/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
. 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. 
Nochmals Danke für die Hilfe im Coding.

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



Nochmals Danke für die Hilfe im Coding.
@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…
JEP! - alle Verbesserungen gehen am Schluss in das finale Programm (aus 1.0 wird 2.0)BlackJack hat geschrieben:@radioflyer: Na Du hast Humor…
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.
- 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.