【问题标题】:Python wont read file line by linePython不会逐行读取文件
【发布时间】:2020-07-20 13:35:32
【问题描述】:
fh=open('Spam.mbox',encoding='utf-8')
data=fh.read()
for line in data:
    print(line)

当我执行上述代码时,python 一次打印出一个字符而不是逐行打印数据。 请指教。

【问题讨论】:

  • 这能回答你的问题吗? Using with to open a file and read the lines
  • 如果您不使用with 语句,请记住在您的场景中调用文件fh.close() 上的close() 函数,否则文件保持打开状态,这可能导致内存泄漏。

标签: python


【解决方案1】:

您可以使用readlines() 函数来做到这一点。

with open('Spam.mbox',encoding='utf-8') as f:
    data = f.readlines()

使用data 变量,您可以对其进行迭代并打印每一行

for i in data:
    print(i)

【讨论】:

  • 另外,如果您不想将整个文件加载到内存中,那么您可以将for 循环放在with 语句中并执行for line in f: print(line)
  • 感谢您的帮助。您知道为什么我的代码不起作用吗?
  • @durganshtaneja 因为您使用了 read() 函数,它将整个文件读取为 1 个字符串。 readlines() 函数读取每一行作为列表的一个元素。
【解决方案2】:

读取文件时使用 with 语句,因为文件处理完毕后将关闭。

逐行阅读:

with open("textfile.txt", "r") as f:
    for line in f:
        print(line)

读取所有行,然后循环遍历该行:

with open("textfile.txt", "r") as f2:
    lines = f2.readlines()
for ln in lines:
    print(ln)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多