Dateien herunterladen und in einem Verzeichnis ablegen

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.
BlackJack

Wie pixewakb ja schon schrieb sind die beiden gemeldeten Fehler gar keine Fehler im Sinne das dort das Programm abbricht. Die kommen auch nicht von Python sondern von der IDE die dafür anscheinend `pyflakes` verwendet. Die Nummer der Meldungen beginnt mit einem W für Warning. Falls die IDE nicht zwischen Fehlern und Warnungen deutlich unterscheidet, sollte man das in den Einstellungen anpassen. Falls das nicht geht, würde ich die IDE wechseln.
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Hilft Dir das:

Code: Alles auswählen

def quadrieren(a, b):
    # quadriert die beiden Zahlen a und b
    if type(a) not in [int, float]:
        raise TypeError("a ist keine Zahl!")
    if type(b) not in [int, float]:
        raise TypeError("b ist keine Zahl!")
    return a * b


def main():
    # Hauptprogramm, Prozedur ohne Rückgabewert
    a = 2
    b = 3

    produkt = quadrieren(a, b)

    print(produkt)

    a = b
    b = produkt

    produkt = quadrieren(a, b)

    print(produkt)


if __name__ == "__main__":
    main()
Formulier mal in Sprache, was Dein Algorithmus erledigen soll. Für mich ist es momentan schwierig Deinen Quelltext und Deine Aufgabe zu verstehen. Wenn ich es richtig denke, dann musst Du prüfen, ob der Ordner noch OK ist, falls ja, speicherst Du daran, falls nein, erzeugst Du einen neuen Ordner und speicherst dann da rein? Ich kann nicht sagen, dass ich ganz durchblicke. Momentan bin ich mit Arbeit eingedeckt und werde mich nicht (komplett) durch deinen Quelltext arbeiten können.
BlackJack

@pixewakb: Die Typprüfungen verhindern das man beispielsweise `long`; `decimal.Decimal`; `fractions.Fraction`; `mpz`-, `mpf`-, oder `mpq`-Objekte aus dem `gmpy`-Modul; Zahltypen und Arraytypen von Numpy, und wahrscheinlich noch eine ganze Menge anderer ”Zahlen” mit der Funktion verwenden kann. Warum?

Zudem würde man wenn schon mit `isinstance()` prüfen um wenigestens direkt abgeleitete Typen nicht auszuschliessen.
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Autsch, wegduck. :oops: :oops: :oops:

In freier Wildbahn prüfe ich selten und wenn dann gezielt auf ganz wenige Dinge. Wie würdest Du die Typprüfung umsetzen, wenn man fragen darf.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@pixewakb: meist gar nicht. Passen die Typen nicht, fliegt einem das ja spätestens bei a*b um die Ohren.
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

aaron hat geschrieben:Ich versuche schon lange die Funktionen zu begreifen. Hier meine erste Frage. Als Parameter übergebe ich year und day, weil ich aktuelle Datum prüfen möchte. Ist 2017 > 2016, dann ist die letzte Woche die 52. Kalenderwoche. Was ist bei einem Jahr mit 53 Kalenderwochen? Ist das neue Jahr < Jahr dann return. Kann mir bitte jemand erklären wie diese Funktion richtig funktioniert, woher die Parameter kommen und wie diese richtig an die nächste Funktion übergeben werden.

Code: Alles auswählen

def check_date(year, day):
      last_day = min(datetime.date(year, 12, 31), datetime.date.today())
      new_year, last_week, _ = day.isocalendar()
      if new_year > year:
          last_week = 52
      elif new_year < year:
          return
Als Fehlermeldung bekomme ich

Code: Alles auswählen

TickDataCsv.py|91 col 1 error| W0612 local variable 'last_day' is assigned to but never used [pyflakes]                                                                                                            
TickDataCsv.py|94 col 1 error| W0612 local variable 'last_week' is assigned to but never used 
Mal eine Verständnisfrage: Beim Speichervorgang würde ich doch nur das Speicherziel ermitteln, da wäre es doch eigentlich egal, in welcher Woche du dich befindest, das würde ich Python überlassen wollen. Wenn Du wieder laden willst (getrennter Vorgang, sonst würde ich mit dem Python-generierten Wert weiterarbeiten), bestimmst Du den letzten Ordner auf der Platte. Die Detailfragen dahinter - ohne mich jetzt durch den Quelltext zu arbeiten, Sorry, mein Schreibtisch liegt voll - müssten dich doch eigentlich gar nicht interessieren?
Antworten