Python txt bestand openen

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • ajow
  • Registratie: April 2016
  • Laatst online: 11-09 22:13
Mijn vraag:
Ik ben pas begonnen met python programmeren en nu wil ik graag met python een .txt bestand openen, wat de ene keer wel lukt en de andere keer niet. Hij geeft dan een OSError: [Errno 22]. En ik zou daarom graag willen weten waaraan dat zou kunnen liggen.
Relevante software en hardware die ik gebruik:
Python 3.5.2 op windows 10

Wat ik al gevonden of geprobeerd heb
met deze code doet hij het wel

file = open(r"D:\python.txt")
print (file.read())

file2 = open (r"D:\arjan\Documents\programmeren\python\importeren bestand\import bestanden\\\hallo wereld.txt")
print (file2.read())

file3 = open("D:\python\python1.txt",'a')
file3.write('hello world')

file.close()
file2.close()
file3.close()

file3 = open("D:\python\python1.txt",'r')
print (file3.read())
file3.close()

file4 = open("D:\python\python1.txt",'r')
print(file4.read())


Maar met deze niet

File = open("D:\arjan\Documents\programmeren\python\importeren bestand\import bestanden\\",'r')
print (File.read())
File.close()



en geeft dan deze foutmelding
OSError: [Errno 22] Invalid argument: 'D:\x07rjan\\Documents\\programmeren\\python\\importeren bestand\\import bestanden\\'


Bij de code zonder fouten heb ik het r etje de ene keer vooraan staan en de andere keer achter aan en de andere keer vooraan staan. ook heb ik geprobeerd met dubbelle \. als ik een a'tje of w'tje gebruik moet ik die zoiezo achter aan zetten. |:(

Alvast bedankt :)



Dingen die ik moet verbeteren op dit eerste topic van mij, het liefst persoonlijk sturen ik erger me altijd aan die berichten als ik een ander topic lees. 8)7

Beste antwoord (via ajow op 27-04-2017 18:13)


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Kijk ook even op https://docs.python.org/2.0/ref/strings.html

zoals veel programmeertalen kun je met de \ escaping toepassen, en dus "speciale" characters in je string toevoegen. Zonder escaping zou je bijvoorbeeld geen quote in je string kunnen opnemen, want een quote zou het einde van de string betekenen. Ook characters zoals een newline of tab kun je d.m.v. \n of \t representeren. Dat heeft helaas wel weer als gevolg dat een \ zelf ook escaped moet worden. Om binnen een string een \ te representeren type je dus \\

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Alle reacties


Acties:
  • 0 Henk 'm!

  • eric.1
  • Registratie: Juli 2014
  • Laatst online: 19:03
File = open("D:\arjan\Documents\programmeren\python\importeren bestand\import bestanden\\",'r')
Typo?
Dit verwijst nu niet naar een "file" namelijk maar een folder.
..."importeren bestand\import bestanden"

[ Voor 3% gewijzigd door eric.1 op 24-04-2017 20:30 ]


Acties:
  • +1 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Je mist een dubbele backslash na D:.
Python en Windows betekent dat je 2 backslashes moet gebruiken, óf alles moet vervangen voor enkele forward slashes.
Either way works. Enkele backslash werkt in ieder geval niet, want dat is een escapeteken.

En nee, we gaan geen persoonlijke berichten sturen. Je stelt je vraag op een forum, niet op een mailinglist.

Iemand een Tina2 in de aanbieding?


Acties:
  • +2 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 20:53
McKaamos schreef op maandag 24 april 2017 @ 20:34:
Python en Windows betekent dat je 2 backslashes moet gebruiken, óf alles moet vervangen vdoor enkele forward slashes.
Either way works. Enkele backslash werkt in ieder geval niet, want dat is een escapeteken.
Niet in raw strings, die dingen met "het r etje de ene keer vooraan". En dat is dus iets heel anders dan een 'r' (voor 'read') als tweede argument voor open().

Acties:
  • 0 Henk 'm!

  • ajow
  • Registratie: April 2016
  • Laatst online: 11-09 22:13
eric.1 schreef op maandag 24 april 2017 @ 20:29:
[...]

Typo?
Dit verwijst nu niet naar een "file" namelijk maar een folder.
..."importeren bestand\import bestanden"
Dan is er iets fout gegaan met het kopieeren, stond er wel bij.
Dit was hem dan goed.
File = open(r"D:\arjan\Documents\programmeren\python\importeren bestand\import bestanden\hallo wereld.txt")
print (File.read())
File.close()


Dus als ik deze dan verbeter krijg je dus:

File = open("D:\\arjan\Documents\programmeren\python\importeren bestand\import bestanden\hallo wereld.txt",'r')

k'Zal hem morgen uit testen of het mij gaat lukken, in ieder geval bedankt voor alle hulp.




'[quote]McKaamos schreef op maandag 24 april 2017 @ 20:34:
En nee, we gaan geen persoonlijke berichten sturen. Je stelt je vraag op een forum, niet op een mailinglist.
[/quote]
ja het antwoord mag gewoon op het forum maar commentaar over bijv. taal fouten of opbouw van mijn vraag/etc. dat mag gewoon via mijn mail

Acties:
  • 0 Henk 'm!

Verwijderd

ajow schreef op dinsdag 25 april 2017 @ 16:57:
Dus als ik deze dan verbeter krijg je dus:

File = open("D:\\arjan\Documents\programmeren\python\importeren bestand\import bestanden\hallo wereld.txt",'r')
Eh...nee:
McKaamos schreef op maandag 24 april 2017 @ 20:34:
Python en Windows betekent dat je 2 backslashes moet gebruiken, óf alles moet vervangen voor enkele forward slashes.
Either way works. Enkele backslash werkt in ieder geval niet, want dat is een escapeteken.
Dus "D:\\map\\map\\bestand.txt" of "D:/map/map/bestand.txt". Dat het in je originele vraag misgaat is wat eric.1 al aangaf: je probeert daar een map te openen, geen tekstbestand.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Kijk ook even op https://docs.python.org/2.0/ref/strings.html

zoals veel programmeertalen kun je met de \ escaping toepassen, en dus "speciale" characters in je string toevoegen. Zonder escaping zou je bijvoorbeeld geen quote in je string kunnen opnemen, want een quote zou het einde van de string betekenen. Ook characters zoals een newline of tab kun je d.m.v. \n of \t representeren. Dat heeft helaas wel weer als gevolg dat een \ zelf ook escaped moet worden. Om binnen een string een \ te representeren type je dus \\

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • ajow
  • Registratie: April 2016
  • Laatst online: 11-09 22:13
Verwijderd schreef op dinsdag 25 april 2017 @ 17:38:
[...]

Eh...nee:


[...]


Dus "D:\\map\\map\\bestand.txt" of "D:/map/map/bestand.txt". Dat het in je originele vraag misgaat is wat eric.1 al aangaf: je probeert daar een map te openen, geen tekstbestand.
Of ik hem nu alleen aan het begin een dubbele dubbele backslash doet of overal, hij doet het dan wel
ook doet hij het gewoon als ik de eerste een forward slashes gebruik en de rest een enkele backslash.

hier zoals ze een uitput geven

file = open ('D:/arjan\Documents\programmeren\python\importeren bestand\import bestanden\hallo wereld.txt','r')
print(file.read())
file.close()
RESTART: D:\arjan\Documents\programmeren\python\importeren bestand\open en maak nieuw bestand aan.py
hallo worldhallo wereldhallo wereldhallo wereldhallo wereldhallo wereldhallo wereld
>>>

file = open ('D:\\arjan\Documents\programmeren\python\importeren bestand\import bestanden\hallo wereld.txt','r')
print(file.read())
file.close()
RESTART: D:\arjan\Documents\programmeren\python\importeren bestand\open en maak nieuw bestand aan.py
hallo worldhallo wereldhallo wereldhallo wereldhallo wereldhallo wereldhallo wereld
>>>

file = open ('D:\\arjan\Documents\\programmeren\\python\\importeren bestand\\import bestanden\\hallo wereld.txt','r')
print(file.read())
file.close()
RESTART: D:\arjan\Documents\programmeren\python\importeren bestand\open en maak nieuw bestand aan.py
hallo worldhallo wereldhallo wereldhallo wereldhallo wereldhallo wereldhallo wereld
>>>



Maar is het dan beter om overal dubbele \\ of / te gebruiken of maakt dat niet heel veel uit?

Acties:
  • +1 Henk 'm!

Verwijderd

Dat je bij de eerste een dubbele moet gebruiken komt doordat 'a' ge-escaped wordt: https://docs.python.org/2.0/ref/strings.html

Bij de andere is het door puur toeval geen karakter dat ge-escaped kan worden, dus gaat het goed. Of je \\ of / gebruikt maakt niet uit, zolang je maar consequent bent. En / is korter.

Acties:
  • 0 Henk 'm!

  • ajow
  • Registratie: April 2016
  • Laatst online: 11-09 22:13
ja dat heb ik gelezen snap het nu weer iets beter,
en nu kijken of ik een csv bestand kan openen ;)

En allen bedankt voor de hulp.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
ajow schreef op woensdag 26 april 2017 @ 17:28:
[...]
Maar is het dan beter om overal dubbele \\ of / te gebruiken of maakt dat niet heel veel uit?
Windows path gebruiken officieel altijd \ als separator, alleen veel libraries/tools accepter ook forward slash. Maar het is correcter om voor windows \ ( dus \\ in een string literal ) te gebruiken. Voor Unix achtige OS'en is het weer standaard om forward slashes te gebruiken. Je kunt binnen je script ook opvragen wat de path separator is d.m.v os.sep ( https://docs.python.org/3/library/os.html#os.sep )

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1