De glob module verschaft een functie glob() waarmee je een list van bestandsnamen kunt produceren, gebaseerd op een zoek-patroon dat als argument wordt meegegeven. Het zoek-patroon wordt geschreven volgens Unix conventies, waarvan de meeste ook op andere systemen gelden. Deze zijn als volgt:

Bijvoorbeeld, het patroon "A[0-9]?B.*" zoekt alle bestanden die beginnen met de letter A, gevolgd door een cijfer, gevolgd door een willekeurig teken, gevolgd door een B, met een willkeurige extensie. Het hangt af van het besturingssysteem of dit patroon onderscheid maakt tussen hoofd- en kleine letters.

Verwar een dergelijk patroon niet met een reguliere expressie. Oppervlakkig gezien lijken ze op elkaar (zoals het feit dat een * een serie willekeurige tekens weergeeft), maar ze zijn compleet verschillend. Dit soort bestand-zoek-patronen ondersteunen alleen de speciale tekens en reeksen die hierboven staan (en die voor reguliere expressies soms een andere betekenis hebben), en je gebruikt ze alleen voor glob of wanneer je rechtstreeks met het besturingssysteem communiceert in de command shell.

from glob import glob

glist = glob( "*.pdf" )
for name in glist:
    print( name )

De glob module bevat ook een functie iglob(), waarvan de functionaliteit gelijk is aan de functionaliteit van glob(), maar die een iterator retourneert in plaats van een list.

Gebruik glob() om de namen van alle Python bestanden in de huidige directory te tonen.

statistics

De statistics module geeft je toegang tot diverse statistische functies. Al deze functies krijgen als argument een sequentie of iterator met getallen (integers of floats).

Er zitten nog meer functies in de statistics module, maar de bovengenoemde zijn het meest gebruikt. Voor geavanceerde statistische berekeningen zijn andere modules beschikbaar, maar die noem ik niet in dit boek.

Deze functies kunnen een StatisticsError genereren. Dit is relevant voor de mode() functie, omdat deze exception gegenereerd wordt als er geen unieke modus is.

from statistics import mean, median, mode, stdev, variance, \
    StatisticsError

data = [ 4, 5, 1, 1, 2, 2, 2, 3, 3, 3 ]

print( "gemiddelde:", mean( data ) )
print( "mediaan:", median( data ) )
try:
    print( "modus:", mode( data ) )
except StatisticsError as e:
    print( e )
print( "st.dev.: {:.3f}".format( stdev( data ) ) )
print( "variantie: {:.3f}".format( variance( data ) ) )

Merk op dat voor een sequentie met een even aantal getallen, de mediaan het gemiddelde is van de twee “middelste” getallen. Sommige mensen prefereren een andere manier van omgaan met de mediaan bij een even aantal getallen; als je een andere aanpak wilt, bestudeer dan andere functies in de statistics module.

Wat betreft de modus: in de literatuur kun je verschillende definities vinden van wat de modus is. De meest gebruikte definitie is “het meest voorkomende getal,” maar wat als er meerdere getallen zijn die alle het meest voorkomen? Wat als ieder getal uniek is? De versie van de modus in de statistics module lijkt niet de meest gebruikte te zijn.