【问题标题】:Open a random file with Python Script使用 Python 脚本打开一个随机文件
【发布时间】:2014-07-21 16:38:53
【问题描述】:

我有一个 Python 脚本,我的家人用它来在我们的媒体中心播放一个随机的儿童电视节目。我的妻子告诉我,该节目似乎偏爱相同的节目选择。有没有办法让它更加随机,以便从一些不同的选项中进行选择?

提前致谢。

这是我目前使用的:

import glob,random,os
files = glob.glob("D:\Recorded TV\Bubble Guppies*.wtv")
files.extend(glob.glob("D:\Recorded TV\Doc McStuffins*.wtv"))
files.extend(glob.glob("D:\Recorded TV\Mickey Mouse Clubhouse*.wtv"))
files.extend(glob.glob("D:\Recorded TV\Octonauts*.wtv"))
files.extend(glob.glob("D:\Recorded TV\Team Umizoomi*.wtv"))
files.extend(glob.glob("D:\Recorded TV\Jake and the Never Land Pirates*.wtv"))
files.extend(glob.glob("D:\Recorded TV\PAW Patrol*.wtv"))
files.extend(glob.glob("D:\Recorded TV\Yo Gabba Gabba*.wtv"))
files.extend(glob.glob("D:\Recorded TV\Henry Hugglemonster*.wtv"))
files.extend(glob.glob("D:\Recorded TV\Wallykazam*.wtv"))
files.extend(glob.glob("D:\Recorded TV\Dora the Explorer*.wtv"))
files.extend(glob.glob("D:\Recorded TV\Jungle Junction*.wtv"))
files.extend(glob.glob("D:\Recorded TV\Little Einstein*.wtv"))
files.extend(glob.glob("D:\Recorded TV\The Wonder Pets*.wtv"))
files.extend(glob.glob("D:\Recorded TV\WordWorld*.wtv"))
file = random.choice(files)
print "Opening file %s..." % file
cmd = "rundll32 url.dll,FileProtocolHandler \"" + file + "\""
os.system(cmd)

【问题讨论】:

  • 在拨打random.choice() 之前尝试random.seed()。这将根据系统时间(伪随机值)为random 流播种。
  • 这似乎更像是一个概率问题。我的猜测是某些节目的剧集比其他节目多?还是同一集被选中的频率更高?
  • 这里也可能存在心理问题,例如确认偏差。您可以考虑保留最近播放的剧集(甚至节目)的列表,如果重新选择,则将其丢弃。

标签: python random


【解决方案1】:

正如@paul-seeb 所说,一个选项中可能有更多程序。如果你喜欢的话,我会先随机选择一个节目,然后在那里演出。

selections = [
    'Doc McStuffins',
    'Mickey Mouse Clubhouse',
    ...
    'WordWorld',
]
selection = choice(selections)
shows = glob('D:\Recorded TV\{}*.wtv'.format(selection))
show = choice(shows)

【讨论】:

  • 感谢大家的反馈。我真的很喜欢先选择的想法。某些节目肯定有更多的剧集。我的妻子告诉我,它似乎偏爱大约 250 多集中的 20 集。我会尝试选择路线,看看会发生什么。