Python:在目录中查找扩展名为.MP3的最新文件

时间:2013-08-16 17:35:19

标签: python file-io

我正在尝试在Python中找到最近修改过的(从此处开始'最新')特定类型的文件。我现在可以获得最新版本,但无论哪种类型都无关紧要。我想只获得最新的MP3文件。

目前我有:

import os

newest = max(os.listdir('.'), key = os.path.getctime)
print newest

有没有办法修改它只给我最新的MP3文件?

5 个答案:

答案 0 :(得分:94)

使用glob.glob

import os
import glob
newest = max(glob.iglob('*.[Mm][Pp]3'), key=os.path.getctime)

答案 1 :(得分:11)

假设您已导入操作系统并定义了路径,这将起作用:

dated_files = [(os.path.getmtime(fn), os.path.basename(fn)) 
               for fn in os.listdir(path) if fn.lower().endswith('.mp3')]
dated_files.sort()
dated_files.reverse()
newest = dated_files[0][1]
print(newest)

答案 2 :(得分:2)

试试这个家伙:

import os
print max([f for f in os.listdir('.') if f.lower().endswith('.mp3')], key=os.path.getctime)

答案 3 :(得分:0)

出于学习目的,我的代码基本上与@Kevin Vincent相同,但不是那么紧凑,但更好地阅读和理解:

import datetime
import glob
import os

mp3Dir = "C:/mp3Dir/"
filesInmp3dir = os.listdir(mp3Dir)

datedFiles = []
for currentFile in filesInmp3dir:
    if currentFile.lower().endswith('.mp3'):
        currentFileCreationDateInSeconds = os.path.getmtime(mp3Dir + "/" + currentFile)
        currentFileCreationDateDateObject = datetime.date.fromtimestamp(currentFileCreationDateInSeconds)
        datedFiles.append([currentFileCreationDateDateObject, currentFile])
        datedFiles.sort();
        datedFiles.reverse();

print datedFiles
latest = datedFiles[0][1]
print "Latest file is: " + latest

答案 4 :(得分:-2)

for file in os.listdir(os.getcwd()):
    if file.endswith(".mp3"):
        print "",file
        newest = max(file , key = os.path.getctime)
        print "Recently modified Docs",newest