Puncte:-2

Python, problemă la citirea liniilor din fișierul deschis folosind „open(’file_name.txt’, ‘r’)”

drapel in

Încerc să citesc conținutul unui fișier text, rând cu rând, cu acest cod:

import os.path  

file_to_read = deschide ("nume_fișier.txt", "r")  
linii = file_to_read.readlines()

Când îl rulez, primesc următoarea eroare:

introduceți descrierea imaginii aici

Traceback (cel mai recent apel ultimul):
Fișierul „D:/Files/test.py”, rândul 4, în <modul>
linii = file_to_read.readlines()
Fișierul „C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\encodings\cp1252.py”, linia 23, în decodare returnează codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: codecul „charmap” nu poate decoda octetul 0x9d în poziția 260: caracterele se afișează la <nedefinit>

Dacă elimin ultima linie, codul arată astfel:

import os.path  

file_to_read = deschide ("nume_fișier.txt", "r")  

Atunci nu primesc nicio eroare.

introduceți descrierea imaginii aici

Ceea ce mă îndreaptă către o problemă cu linii = file_to_read.readlines(), dar nu văd nimic în neregulă.

Ola Ström avatar
drapel in
Am găsit un răspuns bun și aici: https://stackoverflow.com/questions/491921/unicode-utf-8-reading-and-writing-to-files-in-python
cocomac avatar
drapel cn
Ce sistem de operare folosesti? Se pare că întrebarea dvs. [este în afara subiectului aici](https://askubuntu.com/help/on-topic) deoarece nu utilizați Ubuntu sau un derivat oficial.Văd „D:/Files”, care este o cale în stil Windows, iar captura de ecran a IDLE arată ca Windows.
Ola Ström avatar
drapel in
Îmi pare rău, am uitat de asta, folosesc atât Windows, cât și Ubuntu în mod interschimbabil, așa că s-a întâmplat să fie de la Windows chiar acum. Ubuntu meu pe care îl folosesc este pe un VM pe același computer Windows...
Puncte:2
drapel ug

Nu e nimic în neregulă linii = file_to_read.readlines(), dar aceasta este linia care citește de fapt conținutul fișierului. deschis() doar îl deschide și nu continuă să îl citească.

După cum vă spune eroarea, python nu știe cum să decodeze octetul 0x9d în poziția 260. Verificați codarea fișierului și, de asemenea, asigurați-vă că fișierul nu este corupt.

Acest răspuns vă poate ajuta și pe dvs. (adică, specificați în mod explicit codificarea utf-8 sau orice codificare folosește fișierul). In esenta,

cu open("file_name.txt", "r", encoding="utf-8") ca file_to_read:
    ...
Ola Ström avatar
drapel in
„file_to_read = open("file_name.txt", mode="r", encoding="utf-8")' a rezolvat problema...
Puncte:1
drapel in

Această întrebare este în afara subiectului aici. Rulați în Windows și întrebați despre Python, dar acest site este pentru întrebări despre Ubuntu.

Acestea fiind spuse, verificați fișierul text și poziția dată în eroare pentru un caracter special care nu face parte din utf-8. Ceva de genul unui simbol de drepturi de autor, de exemplu.

Ola Ström avatar
drapel in
Îmi pare rău, am uitat de asta, le folosesc pe ambele interschimbabile, așa că tocmai mi s-a întâmplat să rulez codul pe Windows chiar acum. Ubuntu meu este pe o VM pe Windows-ul meu...

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.