如何在python中每次以不同的顺序随机执行代码

时间:2018-08-24 13:18:56

标签: python selenium

所以这个问题是基于我正在做的一个随机项目。基本上,这个项目中包含许多较小的脚本,我想做的是先随机播放然后有时只播放。

所以这是我的意思的示例(因为如果我发布所有脚本,它将变得凌乱)。可以说我有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,但跳过其他脚本。这可能吗?任何建议表示赞赏。谢谢您的时间

3 个答案:

答案 0 :(得分:1)

您当然可以随机选择任意数量的脚本,例如假设您想在25脚本之间运行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

答案 1 :(得分:1)

我能想到的一种方法是随机生成排列序列:

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 :(得分:0)

创建一个字典,键是整数,值是脚本的名称。 然后使用random.randint(1,number_of_scripts)获取字典的随机索引,然后运行 os.system(dict [random.randint(1,number_of_scripts)-1])