Python

Python-Dictionary mit Münchner Postleitzahlen der einzelnen Stadtbezirke

Originalquelle: muenchen.de

Siehe auch Python-Liste der Münchner Postleitzahlen (Stadtbezirk)

muenchner_stadtteile = {
    "Altstadt-Lehel": [80331, 80333, 80335, 80336, 80469, 80538, 80539,] , 
    "Allach-Untermenzing": [80995, 80997, 80999, 81247, 81249,], 
    "Au-Haidhausen": [81541, 81543, 81667, 81669, 81671, 81675, 81677,], 
    "Aubing-Lochhausen": [81243, 81245, 81249,], 
    "Berg am Laim": [81671, 81673, 81735, 81825,], 
    "Bogenhausen": [81675, 81677, 81679, 81925, 81927, 81929,], 
    "Feldmoching-Hasenbergl": [80933, 80935, 80995,], 
    "Hadern": [80689, 81375, 81377,],
    "Laim": [80686, 80687, 80689,], 
    "Ludwigsvorstadt-Isarvorstadt": [80335, 80336, 80337, 80469,], 
    "Maxvorstadt": [80333, 80335, 80539, 80636, 80797, 80798, 80799, 80801, 80802,],
    "Milbertshofen-Am Hart": [80807, 80809, 80937, 80939,], 
    "Moosach": [80637, 80638, 80992, 80993, 80997,], 
    "Neuhausen-Nymphenburg": [80634, 80636, 80637, 80638, 80639,],
    "Obergiesing": [81539, 81541, 81547, 81549,],
    "Pasing-Obermenzing": [80687, 80689, 81241, 81243, 81245, 81247,], 
    "Ramersdorf-Perlach": [81539, 81549, 81669, 81671, 81735, 81737, 81739,], 
    "Schwabing-Freimann": [80538, 80801, 80802, 80803, 80804, 80805, 80807, 80939,], 
    "Schwabing-West": [80796, 80797, 80798, 80799, 80801, 80803, 80804, 80809,], 
    "Schwanthalerhöhe": [80335, 80339,], 
    "Sendling": [80336, 80337, 80469, 81369, 81371, 81373, 81379,], 
    "Sendling-Westpark": [80686, 81369, 81373, 81377, 81379,], 
    "Thalkirchen-Obersendling-Fürstenried-Forstenried-Solln": [81379, 81475, 81476, 81477, 81479,], 
    "Trudering-Riem": [81735, 81825, 81827, 81829,],
    "Untergiesing-Harlaching": [81543, 81545, 81547,],
}

 

Posted by Uli Köhler in Python

Python-Liste der Münchner Postleitzahlen (Stadtbezirk)

Originalquelle: muenchen.de

Siehe auch Python-Dictionary mit Münchner Postleitzahlen der einzelnen Stadtbezirke

muenchner_plz = [
    80995, 80997, 80999, 81247, 81249, # Allach-Untermenzing
    80331, 80333, 80335, 80336, 80469, 80538, 80539, # Altstadt-Lehel
    81541, 81543, 81667, 81669, 81671, 81675, 81677, # Au-Haidhausen
    81243, 81245, 81249, # Aubing-Lochhausen
    81671, 81673, 81735, 81825, # Berg am Laim
    81675, 81677, 81679, 81925, 81927, 81929, # Bogenhausen
    80933, 80935, 80995, # Feldmoching-Hasenbergl
    80689, 81375, 81377, # Hadern
    80686, 80687, 80689, # Laim
    80335, 80336, 80337, 80469, # Ludwigsvorstadt-Isarvorstadt
    80333, 80335, 80539, 80636, 80797, 80798, 80799, 80801, 80802, # Maxvorstadt
    80807, 80809, 80937, 80939, # Milbertshofen-Am Hart
    80637, 80638, 80992, 80993, 80997, # Moosach
    80634, 80636, 80637, 80638, 80639, # Neuhausen-Nymphenburg
    81539, 81541, 81547, 81549, # Obergiesing
    80687, 80689, 81241, 81243, 81245, 81247, # Pasing-Obermenzing
    81539, 81549, 81669, 81671, 81735, 81737, 81739, # Ramersdorf-Perlach
    80538, 80801, 80802, 80803, 80804, 80805, 80807, 80939, # Schwabing-Freimann
    80796, 80797, 80798, 80799, 80801, 80803, 80804, 80809, # Schwabing-West
    80335, 80339, # Schwanthalerhöhe
    80336, 80337, 80469, 81369, 81371, 81373, 81379, # Sendling
    80686, 81369, 81373, 81377, 81379, # Sendling-Westpark
    81379, 81475, 81476, 81477, 81479, # Thalkirchen-Obersendling-Fürstenried-Forstenried-Solln
    81735, 81825, 81827, 81829, # Trudering-Riem
    81543, 81545, 81547, # Untergiesing-Harlaching
]

 

Posted by Uli Köhler in Python

Ist mein BytesIO leer oder nicht (Python)?

Um herauszufinden, ob eine BytesIO-Instanz leer ist oder nicht, rufe die Größe des Bytes IO auf und überprüfe, ob diese > 0 ist:

mein_bytesio.getbuffer().nbytes > 0:

Das Folgende Beispiel zeigt, wie man in einer if-Abfrage überprüft, ob ein BytesIO-Objekt leer ist:

if mein_bytesio.getbuffer().nbytes > 0:
    print("mein_bytesio ist leer")
else:
    print("mein_bytesio ist NICHT leer")

 

Posted by Uli Köhler in Python

Wie kann man in Python eine E-Mail mit Anhang per SMTP versenden?

Dieses Bespiel zeigt, wie man in Python eine E-Mail mit Anhang versenden kann. Der Anhang wird direkt aus einer Datei gelesen.

#!/usr/bin/env python3
import smtplib
import mimetypes
from email.message import EmailMessage

# E-Mail-Objekt initialisieren und Nachrichtentext setzen:
msg = EmailMessage()
msg['Subject'] = 'Diese E-mail enthält einen Anhang'
msg['From'] = '[email protected]'
msg['To'] = '[email protected]'
# Set text content
msg.set_content('Please see attached file')

def attach_file_to_email(email, filename):
    """Attach a file identified by filename, to an email message"""
    with open(filename, 'rb') as fp:
        file_data = fp.read()
        maintype, _, subtype = (mimetypes.guess_type(filename)[0] or 'application/octet-stream').partition("/")
        email.add_attachment(file_data, maintype=maintype, subtype=subtype, filename=filename)

# Anhang anhängen
attach_file_to_email(msg, "myfile.pdf")

def send_mail_smtp(mail, host, username, password):
    s = smtplib.SMTP(host)
    s.starttls()
    s.login(username, password)
    s.send_message(mail)
    s.quit()

# E-Mail per SMTP senden
send_mail_smtp(msg, 'smtp.domain.com', '[email protected]', 'sae7ooka0S')

Das oben gezeigte Skript benutzt die Folgenden Funktionen:

import smtplib
import mimetypes

def attach_file_to_email(email, filename):
    """Attach a file identified by filename, to an email message"""
    with open(filename, 'rb') as fp:
        file_data = fp.read()
        maintype, _, subtype = (mimetypes.guess_type(filename)[0] or 'application/octet-stream').partition("/")
        email.add_attachment(file_data, maintype=maintype, subtype=subtype, filename=filename)

def send_mail_smtp(mail, host, username, password):
    s = smtplib.SMTP(host)
    s.starttls()
    s.login(username, password)
    s.send_message(mail)
    s.quit()

Initalisiere das E-Mail-Object wie Folgt:

# E-Mail-Objekt initialisieren und Nachrichtentext setzen:
msg = EmailMessage()
msg['Subject'] = 'This email contains an attachment'
msg['From'] = '[email protected]'
msg['To'] = '[email protected]'
# Set text content
msg.set_content('Please see attached file')

und hänge dann die Datei so an:

attach_file_to_email(msg, "myfile.pdf")

Danach kannst du die E-Mail so per SMTP versenden:

send_mail_smtp(msg, 'smtp.my-domain.com', '[email protected]', 'sae7ooka0S')
Posted by Uli Köhler in E-Mail, Python

Wie berechnet man die Anzahl der Tage in einem Jahr mit pandas?

In unserem vorigen Post haben wir gezeigt, wie man mithilfe der Pendulum-Bibliothek die Anzahl der Tage ein einem Jahr berechnen kann.

Dieser Post zeigt, wie man die Anzahl der Tage in einem Jahr mit pandas berechnet:

import pandas as pd
def number_of_days_in_year(year):
    start = pd.Timestamp(year, 1, 1)
    end = pd.Timestamp(year + 1, 1, 1)
    return (end - start).days)

Beispiel:

print(number_of_days_in_year(2020)) # Gibt 366 aus
print(number_of_days_in_year(2021)) # Gibt 365 aus

Detailierte Beschreibung:

Zuerst definieren wir das Startdatum als den 1. Januar des zu berechnenden Jahres:

start = pd.Timestamp(year, 1, 1)

Das Enddatum ist dementsprechend der erste Januar des darauf folgenden Jahres

end = pd.Timestamp(year + 1, 1, 1)

Der Rest ist einfach: Wir können die Daten voneinander subtrahieren und im resultierenden pd.Timedelta-Objekt .days aufrufen, um die Anzahl der Tage zu erhalten.

(end - start).days

 

Posted by Uli Köhler in pandas, Python

Anzahl der Tage in einem Jahr mit Python berechnen

Wir können die pendulum-Bibliothek benutzen, um die Anzahl der Tage in einem Jahr zu bestimmen:

import pendulum

def number_of_days_in_year(year):
    start = pendulum.date(year, 1, 1)
    end = start.add(years=1)
    return (end - start).in_days()

Usage example:

print(number_of_days_in_year(2020)) # Gibt 366 aus
print(number_of_days_in_year(2021)) # Gibt 365 aus

Erklärung:

Zuerst definieren wir das start-Datum als das erste Datum (1. Januar) des Jahres, für das wir die Anzahl der Tage berechnen sollen:

start = pendulum.date(year, 1, 1)

Nun können wir die add-Funktion aus pendulum verwenden, um exakt ein Jahr zu diesem Datum zu addieren. Dies resultiert immer im ersten Januar des darauf folgenden Jahres.

end = start.add(years=1)

Der Rest ist einfach: Wir benutzen in_days(), um die Anzahl der Tage in (end - start) zu erhalten:

(end - start).in_days()

 

Posted by Uli Köhler in Python

Was ist die Formel für 2/3/4 parallele Widerstände?

Formel für 2 parallele Widerstände R1 und R2:

R_{insgesamt} = \frac{1}{\frac{1}{R_1} + \frac{1}{R_2}}

Python-Ccode:

rinsgesamt = 1. / (1./r1 + 1./r2)

Formel für 3 parallele Widerstände R1 undR2:

R_{insgesamt} = \frac{1}{\frac{1}{R_1} + \frac{1}{R_2} + \frac{1}{R_3}}

Python-Code:

rinsgesamt = 1. / (1./r1 + 1./r2 + 1./r3)

Formel für 4 parallele Widerstände R1 und R2:

R_{insgesamt} = \frac{1}{\frac{1}{R_1} + \frac{1}{R_2} + \frac{1}{R_3} + \frac{1}{R_4}}

Python-Code:

rinsgesamt = 1. / (1./r1 + 1./r2 + 1./r3 + 1./r4)

 

Posted by Uli Köhler in Elektronik, Python