gpt4 book ai didi

python - 循环搜索字符串直到找到字符串 python

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:27 25 4
gpt4 key购买 nike

我以为这会很容易,经过 3 小时的搜索和反复试验,这似乎并不容易。

我只想循环搜索一个字符串,直到找到该字符串。我正在日志文件中搜索出现条件时出现的字符串,例如当字符串 "function test 1" 出现在日志中时,我需要找到它然后执行另一个函数。

找到是没有问题的,问题是循环直到找到。

这完美地找到了:

for line in open(WebPath + SmokeTest): #these are variables I use to construct the path
if 'readfalseloop2' in line:
print True
f = open(WebPath + SmokeTest,'a')
f.write('<font color= "#347C2C">readfalseloop2</font><br />')
f.close()
break
else:
print False

我想执行这个直到找到这个词。理想情况下,我想将它嵌入到多个函数中,此时我不想单独定义。

我没有成功使用任何循环构造,是的,我查看了 python 文档,搜索了这个站点并 ubuntu forum .

最佳答案

安德鲁的好代码。我没有被告知存在 for/else 可能性。

但是为了缓和机器进程的事件,可以避免重复打开和关闭文件,并且最好降低验证 IMO 的频率

from time import sleep

with open(WebPath + SmokeTest,'a+') as f:
while True:
if 'readfalseloop2' in f.read():
f.seek(0,1)
f.write('\n<font color= "#347C2C">readfalseloop2</font><br />')
print True
break
print '~',
f.seek(0,0)
sleep(2)

这段代码有效,我测试过了。但前提是更改是通过另一个程序执行的。当我试图通过插入

来修改文件时
<font color= "#347C2C">readfalseloop2</font><br />

手动链接,Windows 拒绝关闭更改的文件。

.

f.read() 之后,文件的指针 f 必须重新激活才能写入

<font color= "#347C2C">readfalseloop2</font><br />

链在文件内容的末尾。

我不知道这次重新激活的原因是什么。我只知道如果不执行f.seek(0,1)指令,进程​​就不能从“读”模式切换到“写”模式。

f.seek(0,1) 表示“从当前位置移动 0 个字符”;给出另一个命令是没有用的,因为指针已经在文件的末尾,并且它无论如何都会在开始写入之前返回到文件的末尾,以防它在其他地方:那就是'a'模式特性。因此,即使通过 f.seek(0,0) 将指针再次定位到文件的开头,写入也会在结尾完成。

;

如果测试if 'readfalseloop2' in f.read() 给出False,指针必须移动f.seek(0,0 ) 到文件的最开头,以便新的后续阅读整个文件的内容。

.

警告:如果文件是用 utf-8 编写的,我不知道会发生什么,因为在 utf-8 中,字符不是由相同长度的字节表示的,这取决于字符。在我看来,即使使用 utf-8 也应该可以正常工作

.


编辑

我找到了一个更清晰更短的代码:

from time import sleep

with open(WebPath + SmokeTest,'r+') as f:
while not 'readfalseloop2' in f.read():
print '~',
f.seek(0,0)
sleep(2)

f.seek(0,1)
f.write('\n<font color= "#347C2C">readfalseloop2</font><br />')
print 'True'

或者

from time import sleep

with open(WebPath + SmokeTest,'r') as f, open(WebPath + SmokeTest,'a') as g:
while not 'readfalseloop2' in f.read():
print '~',
f.seek(0,0)
sleep(2)

g.write('\n<font color= "#347C2C">readfalseloop2</font><br />')
print 'True'

8 行。 Python 很棒

关于python - 循环搜索字符串直到找到字符串 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4857942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com