牛叔叔 的笔记

好好学习

2021-06-04 17:48

如何将某个文件目录中的文件随机取出其中几个

牛叔叔

Python

(1056)

(0)

收藏

在开发万码学堂的铃声系统时,有个需求,需要从某个音乐文件夹下随机取出其中几个歌曲播放。

如何随机取出几个歌曲文件呢?

大体思路是先将某个目录中的文件全部取出放到数组中,然后随机取出其中几首。


给出某个目录中的文件代码:

def TimeStampToTime(timestamp):
    timeStruct = time.localtime(timestamp)
    return time.strftime('%Y%m%d',timeStruct)
def get_FileCreateTime(filePath):
    t = os.path.getctime(filePath)
    return TimeStampToTime(t)

#列出wanmait.com今天的歌曲文件(比如扩展名是.mp3或者.wav等)
def get_dir_mp3files(fileroot):
    mp3files = []
    if not os.path.isdir(fileroot):
        return mp3files
    files = os.listdir(fileroot)
    for file in files:
        if os.path.splitext(file)[1] in '.mp3,.wav,.m4a,.wma':
            mp3 = os.path.join(fileroot, file)
            mp3_time = get_FileCreateTime(mp3)
            mp3files.append((mp3,int(mp3_time)))
    return mp3files



这就拿到了fileroot目录中的全部歌曲文件,接下来取出其中几首:

def get_random_music(dir,count):
    '''
    从指定目录dir选取count个随机歌曲
    :param dir:
    :param count:
    :return:
    '''
    #fileroot = r'e:\mp4\am'
    
    if not os.path.isdir(dir): return [('',0)*count]

    mp3filestemp = get_dir_mp3files(dir)
    #随机选取
    mp3filestemp = random.sample(mp3filestemp,k=tcount)
    return mp3filestemp


那假如现在需求是:看看目录中歌曲文件是否今天新下载的歌曲,如果有,首先新下载的歌曲。如果没有再从其他文件中随机选,但是越新的歌曲,概率越大。如何实现?

0条评论

点击登录参与评论