Я довольно поздно для партии, но вот решение, использующее windows api. Это всегда открывает связанное приложение.
import ctypes
shell32 = ctypes.windll.shell32
file = 'somedocument.doc'
shell32.ShellExecuteA(0,"open",file,0,0,5)
Множество магических констант. Первый нуль - это hwnd текущей программы. Может быть нулевым. Остальные два нули - это необязательные параметры (параметры и каталог). 5 == SW_SHOW, он указывает, как выполнить приложение. Подробнее читайте в документах ShellExecute API .
Это кажется очевидным решением, которое не должно выполнять больше работы, чем необходимо:
def shuffled(gen):
ls = list(gen)
random.shuffle(ls)
return ls
Поскольку сборка из примитивов stdlib настолько проста, я не уверен, что имеет смысл включать это как отдельный примитив.