1 van 1
Python bestand vanaf je computer inlezen
Geplaatst: ma 25 nov 2024, 23:35
door mp419a
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.
Re: Python bestand vanaf je computer inlezen
Geplaatst: di 26 nov 2024, 00:13
door irArjan
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())
Re: Python bestand vanaf je computer inlezen
Geplaatst: di 26 nov 2024, 00:32
door irArjan
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.
Re: Python bestand vanaf je computer inlezen
Geplaatst: di 26 nov 2024, 10:18
door CoenCo
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
Re: Python bestand vanaf je computer inlezen
Geplaatst: di 26 nov 2024, 10:54
door Xilvo
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
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?
Re: Python bestand vanaf je computer inlezen
Geplaatst: di 26 nov 2024, 12:15
door irArjan
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.
Re: Python bestand vanaf je computer inlezen
Geplaatst: di 26 nov 2024, 12:21
door Xilvo
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.
Re: Python bestand vanaf je computer inlezen
Geplaatst: di 26 nov 2024, 15:25
door irArjan
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.
Re: Python bestand vanaf je computer inlezen
Geplaatst: di 26 nov 2024, 15:38
door Xilvo
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.
Re: Python bestand vanaf je computer inlezen
Geplaatst: di 26 nov 2024, 17:41
door CoenCo
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..
Re: Python bestand vanaf je computer inlezen
Geplaatst: za 30 nov 2024, 17:20
door OOOVincentOOO
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.