Es gibt verschiedene Konsolenbefehle wie der virtuelle Ordner erstellt werden soll.
Ich folgte jeweils folgender Instruktion
Es gibt verschiedene Konsolenbefehle wie der virtuelle Ordner erstellt werden soll.
Ich folgte jeweils folgender Instruktion
Besonders wenn man mit Windows arbeitet, lohnt es sich virtuelle Umgebungen für jedes Projekt mit Python anzulegen.
Plugins sind uneinheitlich ins Windosw OS eingebunden
Python ist aufgrund seiner vielen Bibliotheken mächtig. Doch es gibt keine standadisierte Prozedur wie die Plugins dem Betriebsystem hinzugefügt werden. Sie liegen deshalb an mehreren Orten verteilt. Dies führt dazu, dass man keinen Überblick erhält, welche Plugins installiert sind.
Was ist das Problem?
Will man ein spezifisches Python-Projekt updaten, so betrifft dieses Update ev. auch andere Projekte. Deren Schnittstelle zu anderen Programmen stimmt dann ev. nicht mehr und man weiss nicht warum.
Was macht die virtuelle Umgebung?
In jeder virtuellen Umgebung installiert man lokal in diese Umgebung die Plugins. Diese berühren so die anderen Projekte nicht.
Best Practice
Programm pyinstaller fasst python pakete zusammen zu einem executable
Installation: git clone https://github.com/pyinstaller/pyinstaller
Von Python zu Exe
pyinstaller test.py Befehl ausführen
. Es wird automatisch ein Ordner dist/ bebildet,
. in dem das exe liegt
Linuxpfade
haus/zimmer/fenster.txt
Windowspfade
C:\\haus\zimmer\fenster.txt
Wie kann das ein Executable händeln?
Python: os.path.join(„haus“,“zimmer“)
Die Wörter werden intelligent zusammengefügt. Je nach OS mit anderem Backslash.
Liste zu String
list = [ „ha“, „ba“, „la“ ]
string = „“.join(list) out: „habala “
string = “ „.join(list) out: “ ha ba la „
Ziel
3 x 3 Array mit 0 initialisieren
Struktur: List of list
Liste mit 3 Elementen, die selbst Listen sind
array = [ [0, 0, 0], [0, 0, 0], [0, 0, 0] ]
Umsetzung simple
element = [ „0“] * 3
array = element * 3
Umsetzung variabel
for i in range(3):
. array.append( [„0“ * 3 ]
return = str( var_1) + “ banana“ + str( var_2 ) \
. “ apricots“
return = var_1 * 2 + 0.1 * var_2 \
+ result_a – result_b
\ auf nächsten Zeile weiterzucoden,
. wie wenn alles in einer Zeile stünde
list
list = ["a", "b" ] for i in list: # i sind Elemente print i # output: a # b range(2) = [ 0, 1 ] # ist nummerierte Liste for i in range(2): print i # output 0 # 1 for i in range( len(list) ): print list[i] # output: a # b
………………………………………………………………………….
dictionary
dict = {„a“=5,
. „b“ = 8 }
for i in dict: // i sind keywords
. print i // output a
. // b
print dict(„i“) // output 5
. // 8
list_1 = [ 2, 7, 9]
type( list_1 ) -> < type ‚list‘>
type( list_1[0]) -> < type ‚int‘ >
list_2 = [„hoi“, „ciao“ ]
type( list_2[0]) -> < type ’str‘ >
dict = { „wurst“ : 5,
“ brot“ : 2 }
type( dict) -> <type ‚dict‘ >
type( dict[„wurst“]) -> < type ‚int‘ >
Byte-Struktur
– Formatvariablen definieren definieren Datenstruktur
– Formatvariablen stehen in einem String
– für jede Formatvariable muss eine Variable mitgegeben werden
– folgen grosse Datenpakete als, muss deren Länge
. bekannt sein und wird vor der Stringvariable eingefügt
– “ > “ bedeutet big endian, “ < “ littel endian
command = pack(‚ >BH‘ + str(length) + ’s ‚, typ, command, length, data)
Vor Daten Schlüsselwörter einfügen
data = pack(‚ >BBH’+str(length)+’s ‚, testnumber, time, command, length, data)
Schlüsselwörter vor Data extrahieren
testnumber = unpack(‚>B‘, data[0:1])
time = unpack(‚>B‘, data[1:2])
Daten ohne Schlüsselwörter
data[:4] die ersten 4 Bytes werden weggelassen
Big Endian / Littel Endian
big endian = normal a = (‚>B‘, 3) output a = 00 03
little endian a = (‚<B‘, 3) output a = 03 00
Info
In Python werden Daten als String übergeben. Sollen diese eine bestimmte Byte-Struktur haben, helfen die Funktionen pack() and unpack().
import struct *