Änderungen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche

Python Grundlagen

3.189 Byte hinzugefügt, 18:49, 18. Apr. 2019
/* Spracherkennung */
=== Debian apt basierte Linux Systeme (...buntu etc) ===
Auch hier ist python3 und pip3 oft schon installiert. Ansonsten hilft hier ein <code>sudo apt install python3-pip</code>
 
=== Wo befindet sich dann alles? ===
Der Pfad zu Python<br>
<pre>
import sys
sys.prefix
>>> 'C:\\Users\\strange\\AppData\\Local\\Programs\\Python\\Python37'
</pre>
Der Pfad zu den 3th party libs<br>
<pre>
import site
site.getsitepackages()
>>> 'C:\\Users\\strange\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\strange\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages'
</pre>
== Python Interaktive Shell ==
** Python: <code>for i in range(10): # geht von 0...9</code>
** Durch Listen iterieren:
<pre>list1=[2,3,4]
# geht durch alle Elemente, gibt nur die Elemente zurück
* switch: gibts nicht in Python, kann man aber irgendwie mit dictionaries machen
* Mehrzeilige Kommentare werden mit 3 Hochkommas definiert <pre>''' so werden mehrzeilige Kommentare geschrieben, dieser ist aber nur einzeilig '''</pre>
* Boolsche Operatoren sind wie folgt in Python:
** C: <code>&&</code> -> Python: <code>and</code>
** C: <code>||</code> -> Python: <code>or</code>
** Aber: Binäre Operatoren <code>&</code> bzw. <code>|</code> funktionieren wie in C
* Sehr nützlich aber ungewohnt auf den ersten Blick: Funktionen können mehrere Werte zurückgeben - die werden dann mit Komma getrennt wieder eingesammelt:
<pre>
# so einfach macht man eine Funktion mit zwei Rückgabewerten...
def ret2(a,b):
a += 1
b += 2
return a, b
 
# ...und so einfach nutzt man sie
c, d = ret2(10, 20)
print(c, d)
</pre>
 
= Raspberry =
 
Um ein ausführbares Skript zu erzuegen muss in der ersten Zeile das Shebang stehen.<br>
<code>#!/usr/bin/python3</code><br>
Um an den Pfad der Pythoninstallation zu kommen kann wahlweise python oder python3 mit which aufgerufen werden.<br>
<code>which python3</code>
 
Danach noch die Datei ausführbar machen.<br>
<code>chmod +x filename.py</code>
 
Und zum Schluss ausrühren.<br>
<code>./filename.py</code>
 
= Von Python2 nach Python3 =
Mit dem folgenden Befehl kann man python2-Skript automatisch nach python3 umwandeln: <code>2to3 -w DATEINAME.py</code>.
 
Wenn man dann noch in die erste Zeile des Python3-Skriptes folgendes einfügt: <code>from __future__ import print_function</code> läuft das Skript evtl unter beiden python Versionen, da man damit unter Python2 auch die Python3-Print-Syntax nutzen kann.
= Python Bibliotheken =
{|
| style="width:160px;" | '''[http://www.numpy.org/ NumPy] | Bibliothek für eine einfache Handhabung von Vektoren, Matrizen oder generell großen mehrdimensionalen Arrays und Numerische Mathematik.|-| [https://www.eclipse.org/paho/ paho-mqtt]'''
| MQTT-Client um mit unserem [[MQTT|Mosquitto]] ([[ServiceIoTServer|MQTT-Server]]) zu kommunizieren
|-
| [https://pillow.readthedocs.io/en/stable/ Pillow]
| Lieblingsbibliothek Liest, schreibt und bearbeitet viele Grafikdateien. Hinweis: Pillow installieren, bei der Nutzung aber PIL schreiben: <code>from PIL import Image</code> schreiben. Die Lib ersetzt alte PIL und Image Libs.|-| [https://matplotlib.org/ matplotlib]| Plotten von LutzGraphen in [https://matplotlib.org/gallery/index.html diversen] Geschmacksrichtungen.
|}
 
<br>
Nicht alle Bibliotheken lassen sich unter Windows mit pip istallieren. Manche wollen kompiliert werden und dann wirds kompliziert wie z.B. PyAudio.<br>
Es gibt aber schon vorkompilierte Binaries auf dieser Seite zum downloaden und manuellen installieren: https://www.lfd.uci.edu/~gohlke/pythonlibs/
 
= Spracherkennung =
 
<pre>pip install SpeechRecognition</pre>
 
Für das Mikrophone braucht man PyAudio
<pre>pip install PyAudio</pre>
Under windows muss dass gebaut werden, um das zu umgehen das Wheel manuell herunter laden.
https://www.lfd.uci.edu/~gohlke/pythonlibs/<br>
<pre>pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl</pre>
 
<pre>
import speech_recognition as sr
 
r = sr.Recognizer()
 
with sr.Microphone() as mp:
print('say')
audio = r.listen(mp)
try:
#print(r.recognize_sphinx(audio))
print(r.recognize_google(audio, language="de-DE"))
except:
pass
</pre>
688
Bearbeitungen