【问题标题】:How to read data from txt file in python [duplicate]如何在python中从txt文件中读取数据[重复]
【发布时间】:2018-11-12 12:54:21
【问题描述】:

我的文件中有姓名和号码(文件名“phone_book”),我尝试使用以下代码读取所有数据:

def read_phonebook():
    read = open("phone_book.txt", 'r')
    i = 0
    for i in (len(read)):
        print(i + '\t')

    read.close()

while True:
if menu == 2:
    read_phonebook()

但它给出了错误:read_phonebook 文件没有 len()

如果我不使用 len,它会继续打印数据,因为我使用的是 While 循环。 有人可以解释一下如何让这个函数读取列表的全部数据吗?使用 While 循环?

【问题讨论】:

  • docs.python.org/3/tutorial/… 告诉你所有你需要的——它甚至附带代码示例......
  • 为什么要使用 while 循环来读取文件? menu 是什么?如果下一个命令覆盖它,为什么要设置i = 0?你为什么期待len 给你一个可迭代的?它将帮助您制作minimal reproducible example
  • 如果你想循环任何东西的长度,它会是for i in range(len(read)):...但是read这里是一个可迭代的对象,所以使用len()实际上会在之前迭代整个东西你打印了每一行,剩下的是一个完全消耗的迭代,这意味着之后什么都不能打印

标签: python readfile


【解决方案1】:

首先阅读教程。

  • 如果您正在读取文件,则无需定义函数。
  • 先学基础
  • 如果您只是读取文件并且您是编程初学者,那么您正在采用一种复杂的方法。
  • 采用简单的方法,有助于您理解输入、输出和最终目标。

这里有一个针对初学者的快速提示,也是在 python 中读取文件的最简单方法。

with open("phone_book.txt") as mytxt:
    for line in mytxt:
        print (line)

        Or do something with line

        # if you want to split the line
        # assuming data is tab separated
        newline = line.rstrip("\n").split("\t")

        # if you want conditional printing
        if len(line) > 0:
            print(line)

课程:

  • 当您with open ... 文件超出该范围时将在末尾自动关闭。
  • 使用for line 而不使用.read() 会阻止您将所有数据加载到内存中。
  • 解决缩进问题

【讨论】:

  • 实际上您的缩进似乎也未对齐。 :-P
  • 嗯,好抓!
【解决方案2】:

这里,每一行都可以在read上迭代。

def read_phonebook():
    read = open("phone_book.txt", 'r')
    i = 0
    for line in read:
        print(line)

    read.close() 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多