如何在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文件中读取数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章