Python Cheat Sheet - Handige stukjes Python-code.

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 commando’s

Kijk eens naar de uv - Nieuwe Python Package, Project en Environment Manager

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 - Gebruik van een requirements bestand

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

requests==2.18.4
google-auth==1.1.0

En vertel pip 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 het freeze commando:

python3 -m pip freeze

zal iets als volgt produceren

requests==2.18.4
google-auth==1.1.0

Het pip freeze commando 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 en een rechthoek tekenen, en vervolgens terugconverteren 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 boven linker en onder rechter coördinaten 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