Python 具有for循环问题的readline
我有一个.txt文件,其中包含10行文本排序(每个文本有三个逗号分隔的单词),但下面只读取文本文件中的四行:Python 具有for循环问题的readline,python,python-3.x,file,loops,Python,Python 3.x,File,Loops,我有一个.txt文件,其中包含10行文本排序(每个文本有三个逗号分隔的单词),但下面只读取文本文件中的四行: def main(): path = '/path/to/file.txt' f = open(path, 'r') for line in f: s = f.readline() print(s) f.close main() 但这会将所有行读取到列表中: def main(): path = '/path/t
def main():
path = '/path/to/file.txt'
f = open(path, 'r')
for line in f:
s = f.readline()
print(s)
f.close
main()
但这会将所有行读取到列表中:
def main():
path = '/path/to/file.txt'
f = open(path, 'r')
s = f.readlines()
print(s)
f.close
main()
为什么for循环不起作用?这样可以获得所有行:
with open('/path/to/file.txt') as fp:
for line in fp.read().split('/n'):
print(line)
这将有助于获得所有线路:
with open('/path/to/file.txt') as fp:
for line in fp.read().split('/n'):
print(line)
当在f中为行使用
时,您已经在读取一行了。因此,执行readline()
是没有用的,因为它将读取下一行,这解释了为什么会读取4行而不是10行。当使用for line in f
时,您已经在读取一行了。因此,执行readline()
是没有用的,因为它将读取下一行,这解释了为什么会读取4行而不是10行。对于f中的行:
已经在文件中的行上迭代,然后尝试在该迭代中读取一行。只需使用line
的值,并忘记s
,因为f中的行:
已经在文件中的行上迭代,然后尝试读取该迭代中的行。只需使用行的值
并忘记s
当您打开file.txt时,您会得到一个\u io.TextIOWrapper
对象作为f
对于f中的行:
将在f
迭代器上迭代,逐行将文件的每一行依次生成到行
变量中。您可以看到迭代器是如何工作的
当f
迭代器在循环开始后移动一行时,您可以使用s=f.readline()
读取另一行,从而将迭代器向前移动一行。当您结束第一个循环时,将使用f:
中的行读取另一行f:
,然后通过使用s=f.readline()读取下一行来跳过该行
您的代码将与
def main():
path = '/path/to/file.txt'
with open(path, 'r') as f:
for line in f:
print(line)
main()
当您打开file.txt时,会得到一个\u io.TextIOWrapper
对象作为f
对于f中的行:
将在f
迭代器上迭代,逐行将文件的每一行依次生成到行
变量中。您可以看到迭代器是如何工作的
当f
迭代器在循环开始后移动一行时,您可以使用s=f.readline()
读取另一行,从而将迭代器向前移动一行。当您结束第一个循环时,将使用f:
中的行读取另一行f:
,然后通过使用s=f.readline()读取下一行来跳过该行
您的代码将与
def main():
path = '/path/to/file.txt'
with open(path, 'r') as f:
for line in f:
print(line)
main()
我认为对于f中的行
也会读取一行,f.readline()
读取lineValueError中的下一行:混合迭代和读取方法会丢失数据我很惊讶它能工作。这是因为文件对象是类似迭代器的对象。这意味着当你在你的对象上迭代时,你正在消耗它的行一次,并且在readline
中读取下一行。感谢你的输入,为了你的信息,Rolf,它肯定工作得不好,我不知道for循环已经读取了一行,很高兴知道。我认为for line in f
也读取了一行,f.readline()
读取lineValueError中的下一行:混合使用迭代和读取方法会丢失数据我很惊讶它能工作。这是因为文件对象是类似迭代器的对象。这意味着当你在你的对象上迭代时,你正在消耗它的行一次,然后在readline
部分阅读下一行。谢谢你的输入,谢谢你的信息,Rolf,它肯定没有很好地工作,我不知道for循环已经在一行中读取了,很高兴知道。谢谢,是的,现在再次查看它,我可以看到我的循环现在读了两行,只打印了一行。取出s=f.readline()解决了问题。谢谢,是的,现在再看一遍,我可以看到我的循环现在读取两行,只打印一行。取出s=f。readline()解决了这个问题。