所以这个问题是基于我正在做的一个随机项目。基本上这个项目里面有很多较小的脚本,我希望能够做的是随机播放或只播放有时。
所以这里有一个例子来说明我的意思(因为如果我发布所有脚本,它会变得混乱(。假设我有 5 个脚本,它们都是更大项目的一部分。像这样的东西。
Project 1 which has 5 scripts inside which are:
Script 1
Script 2
Script 3
Script 4
Script 5
所以我希望能够做的是以不同的顺序随机播放这些脚本。因此,对于第一次运行,我希望播放脚本 1,然后播放脚本 2,然后播放脚本 5,但跳过脚本 3 和 4。对于下一次运行,我希望能够播放脚本 3 和脚本 5,但跳过其他脚本。这可能吗?任何建议不胜感激。谢谢你们的时间
我能想到的一种方法是随机生成一个排列序列:
files=['script1.py','script2.py','script3.py']
n=len(files)
sequence=list(np.random.permutation(n)) #generate a random permuation
要跳过某些文件:
skip=np.random.randint(n)
for i in range(skip):
num_to_remove=np.random.randint(n)
if(num_to_remove in sequence):
sequence.remove(num_to_remove)
执行剩余的
for i in sequence:
exec(open(files[i]).read()) #execute file
您当然可以随机选择随机数量的脚本,例如,假设您想在2
到5
个脚本之间运行 10 次,那么您只需执行以下操作:
import random
scripts = ['script1', 'script2', 'script3', 'script4', 'script5']
number_of_runs = 10
for run in range(number_of_runs):
for script in random.sample(scripts, k=random.randint(2, 5)):
print("Run {}: {}".format(run, script))
# execute script
创建一个字典,其中键是整数,值是脚本的名称。 然后使用 random.randint(1, number_of_scripts( 获取字典的随机索引,然后运行 os.system(dict[random.randint(1, number_of_scripts(-1](