mp419a
Artikelen: 0
Berichten: 1
Lid geworden op: ma 25 nov 2024, 23:25

Python bestand vanaf je computer inlezen

Hi ik wil me graag ontwikkelen in Python maar ik loop keer op keer tegen hele simpele dingen aan die onwijs vertragend zijn en frustrerend zijn omdat ze niet lukken. Simpele dingen die volgens een boek moeten werken, maar die dat dus niet doen.

Ik wil een geschreven code die ik in een bestand heb staan direct in Python inlezen. In Python voer ik in:

exec(open("C\:\Users\mark_\Documents\Python\FirstApp.py").read())

en de melding die ik terug krijg is:

exec(open("C\:\Users\mark_\Documents\Python\FirstApp.py").read())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 3-4: truncated \UXXXXXXXX escape

Dus heel simpel:

het bestand FirstApp moet ingelezen worden in Python. Wat moet ik intypen om dit te kunnen? En kan iemand mij, alsjeblieft, vertellen welk boek ik moet aanschaffen om dit soort dingen duidelijk uitgelegd te krijgen. Het is zo frustrerend dat software boeken zo vaak onduidelijk zijn.
Gebruikersavatar
irArjan
Artikelen: 0
Berichten: 389
Lid geworden op: vr 23 okt 2009, 13:04

Re: Python bestand vanaf je computer inlezen

Ok, het lijkt erop dat het bestand firstApp.py in unicode is gecodeerd ipv plain text, probeer dit eens (ook meer python-esk en leesbaarder):

Code: Selecteer alles

with open('FirstApp.py', 'r', encoding='utf-8') as f:
	exec(f.read())
Gebruikersavatar
irArjan
Artikelen: 0
Berichten: 389
Lid geworden op: vr 23 okt 2009, 13:04

Re: Python bestand vanaf je computer inlezen

De vraag is ook even wat voor editor je gebruikt? Misschien is de default om het bestand als unicode op te slaan. Dan zou ik eens kijken of je de default kan veranderen of je kan naar een andere editor gaan.

Voor hele simpele dingen is notepad++ prima. Als het ingewikkelder wordt kan je spyder gebruiken, en als je echt serieus wilt ontwikkelen vind ik pycharm het beste.
CoenCo
Technicus
Artikelen: 0
Berichten: 1.210
Lid geworden op: di 18 okt 2011, 00:17

Re: Python bestand vanaf je computer inlezen

Dat klinkt wel als een hele omweg.
Ervan uitgaande dat je 2 python bestanden hebt die in dezelfde folder staan, en vanuit het ene bestand het andere wilt aanroepen, kan dat ook met een import

Code: Selecteer alles

import FirstApp
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.763
Lid geworden op: vr 30 mar 2018, 16:51

Re: Python bestand vanaf je computer inlezen

CoenCo schreef: di 26 nov 2024, 10:18 Dat klinkt wel als een hele omweg.
Ervan uitgaande dat je 2 python bestanden hebt die in dezelfde folder staan, en vanuit het ene bestand het andere wilt aanroepen, kan dat ook met een import

Code: Selecteer alles

import FirstApp
Het zou me niet verbazen als dat de bedoeling is. Maar een python module importeren is natuurlijk heel iets anders dan het als tekstbestand openen. Als dat laatste de bedoeling is, waarom zou de topic starter dat dan willen?
Gebruikersavatar
irArjan
Artikelen: 0
Berichten: 389
Lid geworden op: vr 23 okt 2009, 13:04

Re: Python bestand vanaf je computer inlezen

Zowel importeren als module als het openen als tekstbestand zijn beide iets heel anders dan het runnen van de python code zelf.

De topic starter is bezig met het leren van Python, het kan gewoon een oefening zijn die laat zien wat er allemaal mogelijk is, dat kan wat omslachtig zijn, maar daar gaat het dan niet om.
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.763
Lid geworden op: vr 30 mar 2018, 16:51

Re: Python bestand vanaf je computer inlezen

irArjan schreef: di 26 nov 2024, 12:15 De topic starter is bezig met het leren van Python, het kan gewoon een oefening zijn die laat zien wat er allemaal mogelijk is, dat kan wat omslachtig zijn, maar daar gaat het dan niet om.
Dat kan, en dat kan zeker een aardige oefening zijn. Ik vraag me alleen af waarom precies een bestand met pythoncode is gekozen om mee te oefenen.
Maar alleen TS kan antwoord geven op de vraag wat het doel van de oefening is.
Gebruikersavatar
irArjan
Artikelen: 0
Berichten: 389
Lid geworden op: vr 23 okt 2009, 13:04

Re: Python bestand vanaf je computer inlezen

mp419a schreef: ma 25 nov 2024, 23:35 exec(open("C\:\Users\mark_\Documents\Python\FirstApp.py").read())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 3-4: truncated \UXXXXXXXX escape
En ineens zie ik dat het een andere error is...

In Python kan je aan strings (text tussen quotes) allerlei speciale characters mee geven, zoals '\t' voor een tab, '\n' voor een newline en, hier relevant, '\Uxxx' voor een unicode character. Dus de '\U' in "C\:\Users\..." wordt de '\U' gezien als een speciaal teken dat voor een unicode character moet gaan staan.

Om te voorkomen dat dit gebeurd moet je er een 'raw' string van maken, dat kan gewoon door de letter 'r' ervoor te zetten, dus probeer dit eens:

Code: Selecteer alles

exec(open(r"C:\Users\mark_\Documents\Python\FirstApp.py").read())
Merk ook op dat ik de '\' direct achter 'C' heb weggelaten, omdat die daar ook niet hoort.
Gebruikersavatar
Xilvo
Moderator
Artikelen: 0
Berichten: 10.763
Lid geworden op: vr 30 mar 2018, 16:51

Re: Python bestand vanaf je computer inlezen

irArjan schreef: di 26 nov 2024, 15:25 En ineens zie ik dat het een andere error is...

In Python kan je aan strings (text tussen quotes) allerlei speciale characters mee geven, zoals '\t' voor een tab, '\n' voor een newline en, hier relevant, '\Uxxx' voor een unicode character. Dus de '\U' in "C\:\Users\..." wordt de '\U' gezien als een speciaal teken dat voor een unicode character moet gaan staan.

Om te voorkomen dat dit gebeurd moet je er een 'raw' string van maken, dat kan gewoon door de letter 'r' ervoor te zetten, dus probeer dit eens:

Code: Selecteer alles

exec(open(r"C:\Users\mark_\Documents\Python\FirstApp.py").read())
Merk ook op dat ik de '\' direct achter 'C' heb weggelaten, omdat die daar ook niet hoort.
Mooi gezien.
Overigens gebruik ik altijd "/" ipv "\" in padnamen onder windows, dat werkt ook. Dan heb je dat probleem niet.

Afgezien daarvan, ik had dat "exec" gemist. Wat ik eerder schreef over het openen van een tekstbestand klopt dus niet.
CoenCo
Technicus
Artikelen: 0
Berichten: 1.210
Lid geworden op: di 18 okt 2011, 00:17

Re: Python bestand vanaf je computer inlezen

Xilvo schreef: di 26 nov 2024, 15:38
irArjan schreef: di 26 nov 2024, 15:25 En ineens zie ik dat het een andere error is...

In Python kan je aan strings (text tussen quotes) allerlei speciale characters mee geven, zoals '\t' voor een tab, '\n' voor een newline en, hier relevant, '\Uxxx' voor een unicode character. Dus de '\U' in "C\:\Users\..." wordt de '\U' gezien als een speciaal teken dat voor een unicode character moet gaan staan.

Om te voorkomen dat dit gebeurd moet je er een 'raw' string van maken, dat kan gewoon door de letter 'r' ervoor te zetten, dus probeer dit eens:

Code: Selecteer alles

exec(open(r"C:\Users\mark_\Documents\Python\FirstApp.py").read())
Merk ook op dat ik de '\' direct achter 'C' heb weggelaten, omdat die daar ook niet hoort.
Mooi gezien.
Overigens gebruik ik altijd "/" ipv "\" in padnamen onder windows, dat werkt ook. Dan heb je dat probleem niet.

Afgezien daarvan, ik had dat "exec" gemist. Wat ik eerder schreef over het openen van een tekstbestand klopt dus niet.
ik gebruik altijd pathlib, omdat die hele goede functionaliteit heeft voor bestandsnamen, extensies, parent folders en globbing (zodat je geen os meer hoeft te importen)

Code: Selecteer alles

from pathlib import Path

mijnbestand=Path(r"C:\Users\mark_\Documents\Python\FirstApp.py")

with open(mijnbestand, 'rb') as f:
	exec(f.read())
ofzo.

Waarbij het "with" statement ervoor zorgt dat het bestand ook weer netjes afgesloten worden, óók als tussentijdse je code crasht..
Gebruikersavatar
OOOVincentOOO
Artikelen: 0
Berichten: 1.645
Lid geworden op: ma 29 dec 2014, 14:34

Re: Python bestand vanaf je computer inlezen

Jammer dat de TS niet meer geageerd. Wil deze niet gewoon een print("Hello World") bestand *.py uitvoeren? Dat is wat ik thans begrijp uit opening post, niet zozeer *.py code bestand uit te voeren in Python code.

Terug naar “IT en informatica”