我正在尝试向我的程序添加一个新的部分来搜索服务器上的bot并删除它们,但是我遇到了一个停止显示的问题:每当程序进入第二部分(我添加的内容)时,“readFirst”的输出就是“[]”。当接下来的几行运行时,我得到一个“列表索引超出范围”错误,原因很明显。你知道吗
我不知道为什么会发生这种情况,因为readlines变量不应该由程序的两个部分共享。你知道吗
代码如下:
while runTimes >= 0:
#Cycles through .php files
openedProg = glob.glob('*.php')
openedProg = openedProg[currentPhp:currentPhp+1]
progInput = ''.join(openedProg)
if progInput != '':
theBot = open(progInput,'r')
#Singles out "$output" on this particular line and closes the process
readFourthFromBottom = theBot.readlines()
wholeLine = (readFourthFromBottom[-4])
output = wholeLine[4:11]
#Singles out "set_time_limit(0)"
readFirst = theBot.readlines()
print(readFirst)
wholeLine2 = (readFirst[0])
output2 = wholeLine2[7:24]
print(output2)
theBot.close()
if progInput == '':
currentPhp = -1
您第一次读取readlines()时正在读取所有行。你知道吗
第二次调用readlines时,它从文件的末尾开始,因此没有要读取的内容。你知道吗
readFirst
变量一文不值,您已经拥有了名称不好的readFourthFromBottom
变量中的所有行。你知道吗readlines
将从IO对象读取所有行。因此,任何后续尝试从文件中读取内容都将产生EOF,因此第二个readlines
将永远不会返回任何其他内容。你知道吗您可以在再次使用
readlines
之前seek到文件的开头,或者更好的是,只需重复使用一次所读的行。除非修改readFourthFromBottom
(顺便说一句,这是一个糟糕的变量名),否则没有理由再次阅读行。你知道吗readlines()
一直读取到文件流的末尾,这意味着光标位于文件的末尾。实际上,这里的问题是readFourthFromBottom
是一个不准确的变量名。它应该是all_lines
,因为它将包含列表中文件中的所有行。那么您应该使用它,而不是试图重新读取readFirst
中的行。你知道吗相关问题 更多 >
编程相关推荐