Python Cheat Sheet

Vaak gebruikte stukjes Python-code

Inhoud

Soms heb ik dit nodig, maar kan het niet direct vinden.
Dus houd ik ze allemaal hier.

Ze zijn niets nieuws,
alleen een aantal kopieën en plakken,
maar ze werken voor mij,
en ik hoop dat jij ze ook nuttig vindt.

Awesome Python in 3d

Algemene Anaconda opdrachten

Controleer of Conda is geïnstalleerd

conda -V

Controleer of Conda up-to-date is

conda update conda

Maak een virtueel omgeving

conda create -n newenvname python=3.12 anaconda

Activeer je virtuele omgeving

source activate newenvname

Installeer extra Python pakketten in een virtuele omgeving

conda install -n newenvname [package]

Deactiveer je virtuele omgeving

source deactivate

Verwijder de virtuele omgeving

conda remove -n newenvname --all

Programma afhankelijkheden

Afhankelijkheden installeren - met behulp van een requirements bestand

In plaats van pakketten individueel te installeren, stelt pip je in staat om alle afhankelijkheden in een Requirementsbestand te declareren. Bijvoorbeeld, je kunt een requirements.txt bestand aanmaken met de volgende inhoud:

requests==2.18.4
google-auth==1.1.0

En je kunt pip instrueren om alle pakketten in dit bestand te installeren met de -r vlag:

python3 -m pip install -r requirements.txt

Afhankelijkheden bevriezen

Pip kan een lijst met alle geïnstalleerde pakketten en hun versies exporteren met behulp van de freeze opdracht:

python3 -m pip freeze

zal iets als volgt produceren

requests==2.18.4
google-auth==1.1.0

De pip freeze opdracht is handig voor het maken van Requirementsbestanden die de exacte versies van alle geïnstalleerde pakketten in een omgeving kunnen herstellen.

Rechthoek tekenen

import cv2

cv2.rectangle(img, (x1, y1), (x2, y2), color=(255,0,0), thickness=2)

x1,y1 ------
|          |
|          |
|          |
--------x2,y2

om de volgende vragen toe te voegen:

cv2.imwrite("my.png",img)

cv2.imshow("lalala", img)
k = cv2.waitKey(0) # 0==wait forever

Ik heb een PIL Image object en ik wil een rechthoek op deze afbeelding tekenen. Ik wil opencv2 gebruiken om een rechthoek te tekenen en deze vervolgens weer omzetten naar een PIL Image object. Hier is hoe ik dat doe:

# im is een PIL Image object
im_arr = np.asarray(im)
# converteer rgb array naar opencv's bgr formaat
im_arr_bgr = cv2.cvtColor(im_arr, cv2.COLOR_RGB2BGR)
# pts1 en pts2 zijn de linkerbovenhoek en rechteronderhoek van de rechthoek
cv2.rectangle(im_arr_bgr, pts1, pts2,
              color=(0, 255, 0), thickness=3)
im_arr = cv2.cvtColor(im_arr_bgr, cv2.COLOR_BGR2RGB)
# converteer terug naar Image object
im = Image.fromarray(im_arr)

Eenvoudige argument parsing

import json

#---------------------------------------------------------------------------
def do_some_awesomeness(src_file, tgt_file):
    print('Converteer wat dingen van {} naar {}'.format(src_file, tgt_file))

#---------------------------------------------------------------------------
def run():
    import argparse

    parser = argparse.ArgumentParser(description="Een mega nuttig en efficiënt python hulpmiddel.")
    parser.add_argument("-s", "--src", dest="src_file",
        help="input json bestandsnaam")
    parser.add_argument("-t", "--tgt", dest="tgt_file",
        help="uitvoer json bestandsnaam")
    
    args = parser.parse_args()

    do_some_awesomeness(args.src_file, args.tgt_file)

if __name__ == '__main__':
    run()

Roep het dan aan zoals:

python ave_roma.py --src 1.json --tgt 2.json

Laden en opslaan van json

import json

def do_convert(src_file, tgt_file):

    with open(src_file) as f:
        src = json.load(f)

    tgt = src # :)

    with open(tgt_file, 'w', encoding='utf-8') as f:
        json.dump(tgt, f, ensure_ascii=False, indent=4)

Bestandsnaam zonder extensie verkrijgen

import os

print(os.path.splitext("/path/to/some/file.txt")[0])

zal printen:

/path/to/some/file