python - 尝试使用 VS Code 使用 Python3 打开 CSV 文件时出现意外结果

标签 python python-3.x csv visual-studio-code python-import

我正在尝试使用 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/

相关文章:

python - 为什么我的 if 语句命令不起作用

mysql - 如何让 MySQL 从包含 CSV 数据作为多列的 TEXT 列加载数据?

java - 使用 Java 将结果集转换为 CSV 文件

python - Coinbase send_money API 总是返回 "amount is below the current minimum"错误

python - 如何捕获 IllegalMonthError

python - 如何直接以 gzip 格式保存 pandas 数据框?

python - 如何使用 Python 和 Graphviz 保持节点处于同一等级?

mysql - LOAD DATA INFILE,在包含微秒的时间戳周围加上引号

python - 将数据框列文本包装为具有不同长度约束的多个列

javascript - 当使用 PyPDF2 添加图层时如何使用 adobe javascript 隐藏一层