我有一个程序,定期下载一组随机文件并检查它们的大小,然后选择一个大小超过给定阈值的文件(当前为6KB)。
检查工作正常,但是如果文件集中没有满足阈值检查的文件,它就会一直在该集合中搜索,永远搜索。
下面是我的代码(函数chosen()是在目录上返回带有文件的random.choice,变量z_file是使用chosen() func选择的文件,size是为随机选择的文件返回get.size值的函数)-
threshold = 6000
while True:
z_file = chosen()
file_size = size(z_file)
if file_size < threshold:
print(z_file + " is too small")
else:
break
print(z_file , "is at least 6KB -" , file_size , "bytes ...")
正常情况下,它工作正常,但有时没有大于6KB的文件,结果循环将永远-
PAGE 1 contains [1] images
PAGE 2 contains [1] images
PAGE 3 contains [3] images
pic3_3.png is too small
pic2_1.png is too small
pic3_3.png is too small
pic3_1.png is too small
pic3_2.png is too small
pic1_1.png is too small
pic3_1.png is too small
pic3_2.png is too small
pic3_2.png is too small
pic3_1.png is too small
pic3_1.png is too small
pic3_2.png is too small
pic3_1.png is too small
pic2_1.png is too small
pic3_3.png is too small
pic3_2.png is too small
pic2_1.png is too small
pic3_2.png is too small
pic3_3.png is too small
pic3_3.png is too small
pic3_3.png is too small我确信我的while循环写得很糟糕,而且我使用but子句的方法不正确,但是我无法理解它。如有任何协助/指示,将不胜感激。
发布于 2022-01-15 13:20:55
如果您想访问所有的文件,random.choice是个坏主意,我建议random.shuffle
threshold = 6000
for i in random.shuffle(file_list):
file_size = size(i)
if file_size < threshold:
print(i + " is too small")
else:
print(i , "is at least 6KB -" , file_size , "bytes ...")
break
print("no file above threshold")https://stackoverflow.com/questions/70721678
复制相似问题