【问题标题】:How to read multiline string as file stream in python3? [closed]如何在python3中将多行字符串读取为文件流? [关闭]
【发布时间】:2019-08-13 14:47:56
【问题描述】:

我们如何在 python 中将多行字符串读取为文件流?

我试过这个:

import io

mystr = """
# comment line
line 1
line 2
line 3
"""

myfile = io.StringIO(mystr)

with open(myfile) as fi:
    for line in fi.readlines():
        print(line)

但这失败了。

【问题讨论】:

  • 你不需要打电话给open - 把它改成with myfile as fi: docs

标签: python python-3.x io


【解决方案1】:

io.StringIO 已经实现 文本 I/O 的基类 (TextIOBase) - 无需额外的open(...)

myfile = io.StringIO(mystr)

with myfile as fi:
    for line in fi:
        # line = line.strip()   # uncomment to strip trailing newline
        print(line)

【讨论】:

  • 也不需要.readlines()
  • OP 可能想要在其中添加 .strip(),具体取决于他们实际所需的输出是什么
  • @Chris_Rands,是的,复制粘贴的初始代码,已修复。谢谢
【解决方案2】:

已经有一个很好的答案。但是,如果你想跳过注释行,你可以这样做:

import io
import itertools

mystr = """
# comment line
line 1
line 2
line 3
"""

with io.StringIO(mystr) as fi:
    for line in fi:
        if not line.startswith('#'):
            print(line)

或者,如果你想要更高级的:

with io.StringIO(mystr) as fi:
    for line in itertools.dropwhile(lambda line: line.startswith("#"), fi.readlines()):
        print(line)

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 2022-01-23
    相关资源
    最近更新 更多