Opdrachten, configuratie en fouten · oefening
Voer een Python-bestand uit vanuit de juiste map
Een Python-bestand kan gewoon aanwezig zijn, met de juiste naam, en toch weigeren te starten. In deze les voer je het meegeleverde bestand report.py tweemaal uit met de opdracht python report.py: één keer vanuit de map waarin het staat en één keer vanuit een map waarin het niet staat.
Bewerk report.py niet. Deze les gaat over hoe dezelfde bestandsnaam vanuit twee verschillende werkmappen wordt bepaald, niet over de Python-code in het bestand.
De terminal naast deze les volgt je accountvoorkeur. Windows opent PowerShell Core; macOS en Linux openen Bash. Beide gehoste routes gebruiken dezelfde structuur onder /workspace en de door het lab meegeleverde starter python.
Voer report.py uit vanuit de map waarin het staat
Reset de werkruimte van hoofdstuk 7 voordat je oefent. De terminal begint in /workspace en report.py staat op het hoogste niveau daarvan. Een geslaagde uitvoering toont:
Project check: ready
Controleer voordat je iets uitvoert beide feiten waarvan je zo afhankelijk bent: waar je staat en of het bestand er is.
Get-Location
Get-Item -LiteralPath ./report.py
python ./report.py
pwd
ls report.py
python report.py
pwd
ls report.py
python report.py
Op je eigen computer kan de starter py of python3 heten. Vraag je shell welke naam daar wordt gevonden. De gehoste oefening gebruikt bewust in beide routes python.
Voer dezelfde bestandsnaam uit vanuit de verkeerde map
De opdracht python report.py bevat twee afzonderlijke zoekacties. Eerst vindt en start de shell python. Daarna zoekt Python in de huidige werkmap naar de relatieve bestandsnaam report.py.
Vanuit /workspace wordt die bestandsnaam bepaald als /workspace/report.py, dat bestaat. Vanuit /workspace/data wordt dezelfde bestandsnaam bepaald als /workspace/data/report.py, dat niet bestaat. Python meldt het volledige pad dat het probeerde te openen.
Dat is de diagnosestap: vergelijk het mislukte pad met je huidige locatie en de bevestigde locatie van het bestand voordat je iets verandert.
Oefening: voer report.py uit vanuit twee mappen
Je doel is om python report.py te zien slagen vanuit /workspace, dezelfde opdracht te zien mislukken vanuit /workspace/data en de twee paden vast te leggen voor Check my work.
Gebruik Reset voordat je begint, zodat de terminal in /workspace start en een oude destination/run-report.txt wordt verwijderd. Volg daarna deze stappen:
Controleer vanuit
/workspaceje locatie en het meegeleverde bestand.Typ
python report.py. Dat moetProject check: readytonen.Ga naar
dataen controleer of je locatie/workspace/datais.Typ opnieuw
python report.py. Deze fout is opzettelijk: lees het volledige pad in de foutmelding van Python.Ga terug naar
/workspaceen typ nogmaalspython report.py. Nu moet het weer werken.Maak het bewijsbestand voor de beoordeling met de onderstaande opdrachten voor jouw terminal.
Set-Content -LiteralPath ./destination/run-report.txt -Value 'attempted=/workspace/data/report.py'
Add-Content -LiteralPath ./destination/run-report.txt -Value 'actual=/workspace/report.py'
Get-Content -LiteralPath ./destination/run-report.txt
echo "attempted=/workspace/data/report.py" > destination/run-report.txt
echo "actual=/workspace/report.py" >> destination/run-report.txt
cat destination/run-report.txt
echo "attempted=/workspace/data/report.py" > destination/run-report.txt
echo "actual=/workspace/report.py" >> destination/run-report.txt
cat destination/run-report.txt
Het voltooide bewijsbestand moet exact deze twee niet-lege regels bevatten:
attempted=/workspace/data/report.py
actual=/workspace/report.py
Met het bewijsbestand kan de beoordeling alleen je resultaat controleren. De geslaagde en mislukte uitvoeringen zelf uitvoeren is de oefening. Laat report.py ongewijzigd en druk daarna op Check my work.
Een cursist voert vanuit /workspace/data de opdracht python report.py uit. Python meldt dat het /workspace/data/report.py niet kan openen. Het bestand staat werkelijk op /workspace/report.py. Welke eerste correctie is het kleinst en wordt het best door het bewijs ondersteund?
Welke opdracht voert vanuit /workspace/data het bestand report.py uit zonder eerst van map te wisselen?
Je kunt een uitvoeropdracht nu volgen door twee afzonderlijke zoekacties: de shell vindt de starter en de starter vindt het bestand. Fouten hebben meer lagen dan dat. De volgende les ordent ze.