Ga naar hoofdinhoud

How to Run Python Scripts Tutorial

Leer hoe je een Python-script vanaf de command line uitvoert, en ook hoe je command line-argumenten aan je script kunt meegeven.
· 10 min lezen

Verken met AI

Voer de code van deze tutorial online uit en bewerk deze

Code uitvoeren

Meestal leert elke beginner eerst een Python-script op de command line te schrijven en gaat daarna over op het uitvoeren van het script vanaf de command line, waarbij het script doorgaans in een teksteditor wordt geschreven en via de command line wordt gedraaid. In deze post bekijken we in meer detail hoe je Python-scripts uitvoert. 

Python-scripts en interpreters

Computers begrijpen code niet zoals mensen die schrijven, en daarom heb je een interpreter nodig tussen de computer en de menselijk geschreven code. De taak van de interpreter is om de code om te zetten naar een formaat dat computers kunnen begrijpen en verwerken.

De interpreter verwerkt de code op de volgende manieren:

  • Verwerkt het Python-script sequentieel

  • Compileert de code naar bytecode, een lager niveau taal die door computers wordt begrepen.

  • Tot slot komt de Python Virtual Machine (PVM) in beeld. De PVM is het runtime-werkpaard van Python. Het is een proces dat de instructies van je low-level bytecode één voor één doorloopt en uitvoert.

Net als scripts heb je ook zoiets als een module: dat is een Python-script dat wordt geïmporteerd en gebruikt in een ander Python-script.

Het Python-script wordt opgeslagen met de extensie .py, wat de computer laat weten dat het een Python-programma is. In tegenstelling tot Windows worden Unix-gebaseerde besturingssystemen zoals Linux en Mac geleverd met Python vooraf geïnstalleerd. Ook verschilt de manier waarop Python-scripts worden uitgevoerd op Windows en Unix-systemen.

Python-scripts uitvoeren: de voorbereiding

Voor alle gebruikers, en vooral voor Windows-gebruikers, is het sterk aan te raden om Anaconda te installeren. Dit kun je downloaden vanaf de Anaconda-website. Je kunt de instructies volgen in deze Anaconda installeren op Windows-tutorial.

Wil je Python3 installeren op een Windows-besturingssysteem, bekijk dan deze Python-setup-tutorial.

De command-line interpreter voor Python kun je op verschillende besturingssystemen als volgt openen:

  • Op Windows heet de command line de opdrachtprompt. Je opent die door op het start-menu te klikken en te zoeken naar command prompt. Een andere manier is via het Uitvoeren-venster: typ cmd en druk op Enter (Startmenu $->$ Uitvoeren en typ cmd). Als Python op je C-schijf is geïnstalleerd, hoef je daarna alleen maar C:\python36\python.exe te typen, waarbij python36 de Python-versie is (Let op: dit pad kan variëren afhankelijk van de map waarin Python is geconfigureerd).
opdrachtprompt
(Bron)
  • Op een Mac-systeem is het heel eenvoudig. Open Launchpad en zoek naar Terminal, en typ in de terminal Python. Je krijgt dan de Python-versie te zien.
mac-systeem
  • Net als op de Mac is de terminal openen op een Linux-systeem ook heel makkelijk. Klik met de rechtermuisknop op het bureaublad en klik op Terminal; typ in de terminal Python.
linux-systeem
(Bron)

Let op: In deze tutorial leer je met de Mac OS-terminal.

Dus zonder verder oponthoud: aan de slag!

Python-scripts schrijven in de terminal

We gaan kijken hoe je in de terminal zelf kunt coderen en de output kunt genereren. Om dit te doen, typ je eerst python3, wat betekent dat je de Python3-versie gebruikt.

Daarna kun je in principe coderen zoals je in een teksteditor of IDE (integrated development environment) zou doen, al heb je in de terminal niet de functionaliteit die een IDE biedt.

Je begint met het evergreene voorbeeld Hello, World! en we kijken hoe de output er in de terminal uitziet.

Het Python-script schrijven in de terminal

Best fijn dat je door alleen de terminal te openen en Python3 te typen, meteen in Python kunt coderen, toch? Laten we nog wat voorbeelden proberen.

Het Python-script schrijven in de terminal

Wat opvalt in het bovenstaande voorbeeld, is dat je zelfs zonder de print-instructie te typen toch de output kreeg.

Laten we de code iets ingewikkelder maken en de NumPy (Numerical Python)-bibliotheek gebruiken om twee arrays te maken en er een paar wiskundige bewerkingen op toe te passen. Ter achtergrond: NumPy is een Python-bibliotheek die grote, multidimensionale arrays en matrices aankan, met daarnaast een uitgebreide verzameling wiskundige functies op hoog niveau om op deze arrays te werken.

Het Python-script schrijven in de terminal

Uit de bovenstaande figuur zie je dat je met NumPy twee arrays kon maken, optellen en vermenigvuldigen, allemaal in de terminal. Let erop dat de functie multiply in NumPy elementgewijs vermenigvuldigt, terwijl dot het inwendig product (dotproduct) van twee matrices neemt. Om het commando np.dot te laten werken, moet je ervoor zorgen dat de kolommen van de eerste matrix gelijk zijn aan de rijen van de tweede matrix en vandaar de value error.

Hoe voer je Python-scripts uit vanaf de terminal

Een Python-script vanaf de terminal draaien is heel eenvoudig: in plaats van het script in de terminal te schrijven, gebruik je een teksteditor zoals vim, emacs of notepad++ en sla je het op met de extensie .py. Open daarna de terminal, ga naar de map waar de code staat en voer het script uit met het sleutelwoord python gevolgd door de bestandsnaam van het script.

Het .py-script uitvoeren vanuit de terminal

Om het bestand terminal.py te maken, gebruik je vim in de terminal met de programmanaam vim terminal.py en plak je de onderstaande code erin. Om de code op te slaan, druk je op de toets esc gevolgd door wq!. En om dat script uit te voeren, hoef je alleen maar python3 terminal.py te typen; binnen minder dan een seconde zie je de output zoals hierboven.

De volgende code is gebruikt in het bovenstaande voorbeeld.

import numpy as np

x = np.array([[1,2],[3,4]], dtype=np.float64)
y = np.array([[5,6],[7,8]], dtype=np.float64)

# Elementwise sum; both produce the array
# [[ 6.0  8.0]
#  [10.0 12.0]]
print("Output of adding x and y with a '+' operator:",x + y)
print("Output of adding x and y using 'numpy.add':",np.add(x, y))

# Elementwise difference; both produce the array
# [[-4.0 -4.0]
#  [-4.0 -4.0]]
print("Output of subtracting x and y with a '-' operator:",x - y)
print("Output of subtracting x and y using 'numpy.subtract':",np.subtract(x, y))

# Elementwise product; both produce the array
# [[ 5.0 12.0]
#  [21.0 32.0]]
print("Output of elementwise product of x and y with a '*' operator:",x * y)
print("Output of element wise product of x and y using 'numpy.multiply':",np.multiply(x, y))

# Elementwise division; both produce the array
# [[ 0.2         0.33333333]
#  [ 0.42857143  0.5       ]]
print("Output of elementwise division x and y with a '/' operator:",x / y)
print("Output of elementwise division x and y using 'numpy.divide':",np.divide(x, y))

# Elementwise square root; produces the array
# [[ 1.          1.41421356]
#  [ 1.73205081  2.        ]]
print("Output of elementwise square root x using 'numpy.sqrt':",np.sqrt(x))
Output of adding x and y with a '+' operator: [[ 6.  8.]
 [10. 12.]]
Output of adding x and y using 'numpy.add': [[ 6.  8.]
 [10. 12.]]
Output of subtracting x and y with a '-' operator: [[-4. -4.]
 [-4. -4.]]
Output of subtracting x and y using 'numpy.subtract': [[-4. -4.]
 [-4. -4.]]
Output of elementwise product of x and y with a '*' operator: [[ 5. 12.]
 [21. 32.]]
Output of element wise product of x and y using 'numpy.multiply': [[ 5. 12.]
 [21. 32.]]
Output of elementwise division x and y with a '/' operator: [[0.2        0.33333333]
 [0.42857143 0.5       ]]
Output of elementwise division x and y using 'numpy.divide': [[0.2        0.33333333]
 [0.42857143 0.5       ]]
Output of elementwise square root x using 'numpy.sqrt': [[1.         1.41421356]
 [1.73205081 2.        ]]

Command line-argumenten doorgeven aan een Python-script

Command line-argumenten maken het leven een stuk eenvoudiger; in productieklare code worden ze vaak gebruikt. Ze maken het reproduceren van code-uitvoer efficiënt. Stel dat je code veel gebruikersinvoer heeft of bestanden inleest: met command line-argumenten hoef je niet in de code te duiken om al die wijzigingen te doen als je bijvoorbeeld de bestandsnaam of een variabele invoer wilt veranderen.

Om dit te doen, gebruik je de module sys, een ingebouwde Python-module. Binnen sys heb je argv, dat je de lijst met command line-argumenten geeft die aan het Python-programma zijn doorgegeven. sys.argv leest de command line-argumenten als een lijst items, waarbij het eerste item/element in die lijst toegankelijk is als sys.argv[1], terwijl het eerste argument, d.w.z. sys.argv[0], altijd de naam van het programma is zoals het is aangeroepen.

Laten we een eenvoudig voorbeeld nemen en kijken hoe het werkt.

Let op: Het command line-argument wordt door Python als een string ingelezen, dus zorg dat je het converteert naar een integer als je met getallen werkt.

Sla, net als in het vorige voorbeeld, de onderstaande regels code op in een editor als command_line.py en om de code uit te voeren typ je python3 command_line.py 10, waarbij 10 het command line-argument is.

import sys
num = sys.argv[1]
for i in range(int(num)):
    print (i)
Command line-argumenten doorgeven aan een Python-script

Wat als je geen command line-argument opgeeft?

Dan krijg je de foutmelding list index out of range, wat ook bevestigt dat sys.argv als een lijst met items leest. Om dit soort fouten te voorkomen, heb je exception handling nodig, wat buiten de scope van deze tutorial valt.

Command line-argumenten doorgeven aan een Python-script

De uitvoer van een Python-script naar een bestand schrijven

Tot slot, als bonus, bekijken we hoe je de output van het Python-script kunt opslaan in een txt-bestand met de toets >. 

Je maakt eerst een map cli en verplaatst de code command_line.py naar de map cli. Controleer vervolgens wat er in die map staat om zeker te weten dat er niet al een txt-bestand aanwezig is.

Typ daarna python3 command_line.py 10 > output.txt en controleer ten slotte de inhoud van de map cli. Nu zou je het bestand output.txt moeten zien.

De uitvoer van een Python-script naar een bestand schrijven

Laten we het bestand output.txt openen en de inhoud bekijken.

De uitvoer van een Python-script naar een bestand schrijven

Uit de bovenstaande output zie je dat de cijfers 0-9 nu in een tekstbestand zijn geschreven met alleen een >-teken.

Conclusie

Gefeliciteerd met het afronden van de tutorial.

Er valt nog veel te ontdekken, zoals GUI-gebaseerde uitvoering in Python, Python-scripts interactief draaien en scripts uitvoeren vanuit een bestandsbeheerder of een IDE. Specifiek voor command line-uitvoering kun je experimenteren met de Windows-command prompt en bekijken hoe die verschilt van een Unix-gebaseerd besturingssysteem.

Begin je net met Python en wil je meer leren, volg dan de cursus Introduction to Data Science in Python van DataCamp.

Python-scripts: veelgestelde vragen

Wat is een Python-script?

Een Python-script is een bestand dat Python-code bevat. De code in een Python-script kan worden uitgevoerd door het script te draaien, vanaf de command line of door het vanuit een ander script aan te roepen.

Hoe maak ik een Python-script?

Om een Python-script te maken, heb je een teksteditor of een integrated development environment (IDE) nodig waarmee je Python-code kunt schrijven en opslaan. Enkele populaire IDE\'s voor Python zijn PyCharm, IDLE en Visual Studio Code.

Om een nieuw Python-script te maken, maak je simpelweg een nieuw bestand en sla je het op met de extensie .py. Daarna kun je je Python-code in het bestand schrijven en het opslaan om het script uit te voeren.

Kan ik een Python-script op de achtergrond draaien?

Ja, je kunt een Python-script op de achtergrond uitvoeren met het commando nohup. Bijvoorbeeld:

nohup python script.py &

Dit draait het script op de achtergrond en laat je de terminal blijven gebruiken terwijl het script draait.

Hoe voer ik een Python-script uit vanaf de command line?

Om een Python-script vanaf de command line uit te voeren, moet Python op je systeem zijn geïnstalleerd. Daarna kun je het volgende commando gebruiken om een script te draaien:

python script.py

Onderwerpen

Gerelateerd