我正在尝试使用 Python(Python 3.9.0,在 VS Code、MacOS 中)使用 with open
打开 csv 文件。我的基本代码如下:
import csv
import os
file_to_load = os.path.join("resources","original_file.csv")
with open(file_to_load) as starting_numbers:
print(starting_numbers)
我得到的结果是:
<_io.TextIOWrapper name='resources/original_file.csv' mode='r' encoding='UTF-8'>
我期望的结果是:
<open file 'Resources/original_file.csv', mode 'r' at 0x[memory address]>
我遇到了this question四年前的事了,但这似乎与我的问题没有直接关系。我当前不尝试获取文件的完整读数,只是获取内存分配。
最佳答案
<open file ...>
是打开文件的 python 2 字符串表示形式。在 python 3 中,文件管理被分解为多个层以实现不同的功能。文本包装器会将文件的字节解码为完全支持 unicode 的 python 3 字符串,而二进制文件只需要一个读取器。请参阅 open
和 Text I/O .
>>> open('test.py')
<_io.TextIOWrapper name='a.py' mode='r' encoding='UTF-8'>
>>> open('test.py', 'rb')
<_io.BufferedReader name='a.py'>
以文本模式打开文件时,TextIOWrapper
位于二进制 BufferedReader
上
>>> f = open('test.py')
>>> f.buffer
<_io.BufferedReader name='test.py'>
为 python 2 编写的旧示例不一定提到它们是 python 2,您可能需要“阅读茶叶”才能弄清楚。一个文件对象看起来像 <open file ...>
是一个致命的赠品。
关于python - 尝试使用 VS Code 使用 Python3 打开 CSV 文件时出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65065074/