Điểm:-2

Python, sự cố khi đọc các dòng trong tệp đang mở bằng cách sử dụng "open('file_name.txt', 'r')"

lá cờ in

Tôi đang cố đọc nội dung của tệp văn bản, từng dòng một, với mã này:

nhập os.path  

file_to_read = open("file_name.txt", "r")  
dòng = file_to_read.readlines()

Khi tôi chạy nó, tôi gặp lỗi sau:

nhập mô tả hình ảnh ở đây

Traceback (cuộc gọi gần đây nhất cuối cùng):
Tệp "D:/Files/test.py", dòng 4, trong <module>
dòng = file_to_read.readlines()
Tệp "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\encodings\cp1252.py", dòng 23, trong giải mã trả về codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: codec 'charmap' không thể giải mã byte 0x9d ở vị trí 260: ký tự ánh xạ tới < undefined>

Nếu tôi xóa dòng cuối cùng, mã sẽ trông như thế này:

nhập os.path  

file_to_read = open("file_name.txt", "r")  

Sau đó, tôi không nhận được bất kỳ lỗi.

nhập mô tả hình ảnh ở đây

Điều này chỉ cho tôi một vấn đề với dòng = file_to_read.readlines(), nhưng tôi không thể thấy bất cứ điều gì sai với nó.

Ola Ström avatar
lá cờ in
Cũng tìm thấy một câu trả lời hay ở đây: https://stackoverflow.com/questions/491921/unicode-utf-8-reading-and-writing-to-files-in-python
cocomac avatar
lá cờ cn
Bạn đang sử dụng hệ điều hành nào? Có vẻ như câu hỏi của bạn [không có chủ đề ở đây](https://askubuntu.com/help/on-topic) bởi vì bạn hiện không sử dụng Ubuntu hoặc một công cụ phái sinh chính thức.Tôi thấy `D:/Files`, là đường dẫn kiểu Windows và ảnh chụp màn hình IDLE của bạn trông giống như Windows.
Ola Ström avatar
lá cờ in
Xin lỗi, quên mất điều đó, tôi đang sử dụng cả Windows và Ubuntu thay thế cho nhau nên hiện tại nó chỉ là của Windows. Ubuntu của tôi mà tôi sử dụng là trên VM trên cùng một máy tính Windows ...
Điểm:2
lá cờ ug

không có gì sai với dòng = file_to_read.readlines(), nhưng đây là dòng thực sự đọc nội dung của tệp. mở() chỉ cần mở nó và không tiếp tục đọc nó.

Giống như lỗi nói với bạn, python không biết cách giải mã byte 0x9d ở vị trí 260. Kiểm tra mã hóa tệp và cũng đảm bảo tệp không bị hỏng.

câu trả lời này cũng có thể giúp bạn (nghĩa là chỉ định rõ ràng mã hóa utf-8 hoặc bất kỳ mã hóa nào mà tệp sử dụng). Thiết yếu,

với open("file_name.txt", "r", encoding="utf-8") dưới dạng file_to_read:
    ...
Ola Ström avatar
lá cờ in
'file_to_read = open("file_name.txt", mode="r", encoding="utf-8")' đã giải quyết được sự cố...
Điểm:1
lá cờ in

Câu hỏi này lạc đề ở đây. Bạn đang chạy trên Windows và hỏi về Python nhưng trang web này dành cho các câu hỏi về Ubuntu.

Phải nói rằng, hãy kiểm tra tệp văn bản và vị trí được đưa ra trong lỗi để tìm một ký tự đặc biệt không phải là một phần của utf-8. Ví dụ như một biểu tượng bản quyền.

Ola Ström avatar
lá cờ in
Xin lỗi, quên mất điều đó, tôi đang sử dụng cả hai thay thế cho nhau nên tôi tình cờ chạy mã trên Windows ngay bây giờ. Ubuntu của tôi nằm trên máy ảo trên Windows của tôi...

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.