我一直在尝试这个代码随机循环,直到找到lookin.txt文件中的匹配项,并在找不到匹配项时停止,因为我的Python知识并不那么精彩。代码只工作一次,但我需要它连续运行,直到找到匹配。如果有人能指引我朝着正确的方向前进,我感激不尽。
#! /usr/bin/env python
import random
randrange = random.SystemRandom().randrange
z = randrange( 1, 1000)
target_f = open("lookin.txt", 'rb')
read_f = target_f.read()
if z in read_f:
file = open('found.txt', 'ab')
file.write(z)
print "Found ",z
else:
print "Not found ",z
Lookin.txt:
453
7
8
56
78
332
答案 0 :(得分:1)
你需要使用while并更改随机数:
#!/usr/bin/env python
import random
target_f = open("lookin.txt", 'rb')
read_f = target_f.read()
while True: # you need while loop here for looping
randrange = random.SystemRandom().randrange
z = str(randrange( 1, 1000))
if z in read_f:
file = open('found.txt', 'ab')
file.write(z)
file.close()
print "Found ",z
break # you can break or do some other stuff
else:
print "Not found ",z
答案 1 :(得分:0)
import random
running=True
while running:
a=random.randint(1,1000)
with open ("lookin.txt") as f:
rl=f.readlines()
for i in rl:
if int(i)==a:
print ("Match found")
with open("found.txt","w") as t:
t.write(str(a))
running=False
试试这个。另外 with open 方法对于文件进程更好。如果您只想要一个随机数,那么只需将一个变量放在之外,而循环。
答案 2 :(得分:0)
" z = randrange(1,1000)"给你一个随机数,你的脚本的其余部分读取整个文件,并尝试将该数字与文件匹配。
相反,请将脚本放入循环中以便继续尝试。
import random
randrange = random.SystemRandom().randrange
while True:
z = randrange( 1, 1000)
DO YOUR SEARCH HERE
while True将导致您的脚本永远运行,因此根据您要完成的操作,您需要添加一个" exit()"当你想要程序结束时的某个地方。
另外,你的"如果z在read_f" line失败,因为它需要一个字符串而不是随机数生成器的整数值。尝试"如果read_f中的str(z):"
答案 3 :(得分:0)
如果找不到随机数,则继续下一个随机数。
import random
randrange = random.SystemRandom().randrange
with open("lookin.txt", 'rb') as target_f:
tmp = [int(i.strip()) for i in target_f.read().split('\n') if i.isdigit() ]
no_dict = dict(zip(tmp, tmp))
while 1:
z = randrange( 1, 1000)
if z in no_dict:
with open('found.txt', 'ab') as target_f:
target_f.write("\n"+str(z))
print "Found ",z
break
else:
print "Not found ",z
注意:如果目标文件不包含随机数范围之间的任何整数,则代码将进入无限循环。