首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3中的io.StringIO vs open()

Python3中的io.StringIO vs open()
EN

Stack Overflow用户
提问于 2018-05-18 19:56:47
回答 1查看 11K关注 0票数 6

我能找到的只有这个语句

创建文本流的最简单方法是使用open(),可以选择指定编码: f = open("myfile.txt", "r", encoding="utf-8") 内存中的文本流也可作为StringIO对象使用: f = io.StringIO("some initial text data")

但是,这并没有给出我什么时候应该在io.StringIO上使用io.StringIO,反之亦然。我知道他们在幕后的工作方式并不完全相同。但是为什么会有人在Python3中使用open()呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-18 20:05:18

不同之处在于:open采用文件名(以及一些其他参数,如模式或编码),io.StringIO采用一个普通字符串,并且都返回类似文件的对象。

因此:

  • 使用open读取文件;
  • 当您需要一个类似文件的对象并且希望传递一个字符串的内容时,请使用StringIO

一个使用StringIO的例子

代码语言:javascript
复制
import csv
import io

reader = csv.reader(io.StringIO("a,b,c\n1,2,3"))
print ([r for r in reader])
# output [['a', 'b', 'c'], ['1', '2', '3']]

它非常有用,因为您可以在需要文件的地方使用字符串。

在通常情况下,在磁盘上有一个csv文件,您可以编写如下内容:

代码语言:javascript
复制
with open(<path/to/file.csv>, ...) as f:
    reader = csv.reader(f, ...)
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50418448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档