Python 3.5 - if 语句中的 Startswith() 未按预期工作
Python 3.5 - Startswith() in if statement not working as intended
我正在研究一些简单的示例,但我遇到了这个示例,但无法弄清楚为什么我没有获得 loop2 的预期结果。循环 1 是我用来逐行查看正在发生的事情的循环。奇怪的是在第 1875 行,startwith returns 为真(见循环 1)但它没有在循环 2.
中打印
显然我遗漏了一些重要的东西。请帮我看看
文本文件位于:http://www.py4inf.com/code/mbox-short.txt
xfile = open("SampleTextData.txt", 'r')
cntr = 0
print("Loop 1 with STEPWISE PRINT STATEMENTS")
for line in xfile:
cntr = cntr + 1
if cntr >1873 and cntr < 1876:
print(line)
print(line.startswith('From: '))
line = line.rstrip()
print(line)
print(cntr)
print()
print("LOOP 2")
for line in xfile:
line = line.rstrip()
if line.startswith('From: '):
print(line)
您打开的文件是一个迭代器,第一个循环已耗尽。
循环一次就完成了。第二个循环将不会执行,除非您关闭并重新打开它。
或者,您可以将其读入字符串或字符串列表。
像xfile
这样的文件对象是单遍迭代器。要遍历文件两次,您必须关闭并重新打开文件,或者使用搜索 return 到文件的开头:
xfile.seek(0)
只有这样,第二个循环才会遍历文件的行。
在开始循环 2 之前,您没有关闭并重新打开文件。从头到尾读取一个文件。循环 1 完成后,读取光标已经在文件末尾,因此没有任何内容可供循环 2 循环使用。
我正在研究一些简单的示例,但我遇到了这个示例,但无法弄清楚为什么我没有获得 loop2 的预期结果。循环 1 是我用来逐行查看正在发生的事情的循环。奇怪的是在第 1875 行,startwith returns 为真(见循环 1)但它没有在循环 2.
中打印显然我遗漏了一些重要的东西。请帮我看看
文本文件位于:http://www.py4inf.com/code/mbox-short.txt
xfile = open("SampleTextData.txt", 'r')
cntr = 0
print("Loop 1 with STEPWISE PRINT STATEMENTS")
for line in xfile:
cntr = cntr + 1
if cntr >1873 and cntr < 1876:
print(line)
print(line.startswith('From: '))
line = line.rstrip()
print(line)
print(cntr)
print()
print("LOOP 2")
for line in xfile:
line = line.rstrip()
if line.startswith('From: '):
print(line)
您打开的文件是一个迭代器,第一个循环已耗尽。
循环一次就完成了。第二个循环将不会执行,除非您关闭并重新打开它。
或者,您可以将其读入字符串或字符串列表。
像xfile
这样的文件对象是单遍迭代器。要遍历文件两次,您必须关闭并重新打开文件,或者使用搜索 return 到文件的开头:
xfile.seek(0)
只有这样,第二个循环才会遍历文件的行。
在开始循环 2 之前,您没有关闭并重新打开文件。从头到尾读取一个文件。循环 1 完成后,读取光标已经在文件末尾,因此没有任何内容可供循环 2 循环使用。