[英]random.choice prints always the same result
我对 python 很陌生,但我知道如何使用其中的大部分内容,包括 random.choice。 我想从 2 个文件列表中选择一个随机文件名。
为此,我正在使用这行代码:
minio = Minio('myip',
access_key='mykey',
secret_key='mykey',
)
images = minio.list_objects('mybucket', recursive=True)
for img2 in images:
names = img2.object_name
print(random.choice([names]))
每次我尝试运行它时,它总是打印相同的文件名(c81d9307-7666-447d-bcfb-2c13a40de5ca.png)
我试图将“打印” function 放在“for”块中,但它会打印出两个文件的名称
您现在正在将变量names
设置为一个特定的图像实例。 这意味着它只是一个单一的值。 尝试将它们添加到数组或类似中。
例如:
names = [img2.object_name for img2 in images]
print(random.choice(names))
minio = Minio('myip',
access_key='mykey',
secret_key='mykey',
)
images = minio.list_objects('mybucket', recursive=True)
names = []
for img2 in images:
names.append(img2.object_name)
print(random.choice([names]))
试试这个,问题可能是你的名字没有列出变量
如果要选择其中一个文件名,请尝试以下操作:
minio = Minio('myip',
access_key='mykey',
secret_key='mykey',
)
images = minio.list_objects('mybucket', recursive=True)
names = []
for img2 in images:
names.append(img2.object_name)
print(random.choice(names))
第一个代码尝试从数组[names]
中随机 select 一个值,但这仅包含一个值,即 for 循环最后一次迭代后的names
变量的值。 而不是这样做,创建一个数组, names
和img2.object_name
从 for 循环的每次迭代到该数组的 img2.object_name 的值。 并使用此数组来获取随机名称。
你的names
只是一个简单的变量,包含最近看到的图像名称,而不是一个完整的列表。
脚本的最后一行如下所示:
value = 2
print(random.choice([value]))
总是打印 2。要得到你想要的,你需要一个所有图像的列表。 这是您的代码,有一个简单的修复:
names = []
for img2 in images:
names.append(img2.object_name)
print(random.choice(names))
使用列表推导可以大大缩短这些代码:
names = [img2.object_name for img2 in images]
print(random.choice([names]))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.