如何在python中从txt文件中读取数据[重复]

Posted

技术标签:

【中文标题】如何在python中从txt文件中读取数据[重复]【英文标题】:How to read data from txt file in python [duplicate] 【发布时间】: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()实际上会在之前迭代整个东西你打印了每一行,剩下的是一个完全消耗的迭代,这意味着之后什么都不能打印 【参考方案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() 

【讨论】:

以上是关于如何在python中从txt文件中读取数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Verilog 中从 txt 读取和写入数组

java中从txt文件读取数据以及写数据到txt文件

c语言中从文件中按行读取字符串,并进行相应操作。

在 Groovy 中从 txt 文件中读取 JSON 对象

逐行读取TXT文件-Python [重复]

python 如何将列表写入文件