1

我有多个带有通用文件名(比如 )的 csv 文件(每个文件每天生成),file_并且我在它们后面附加了日期戳。

例如:file_2015_10_19file_2015_10_18等等。

现在,我只想阅读 5 个最新文件并创建一个比较图。

对我来说,绘图没有问题,但对所有文件进行排序并只读取最新的 5 个文件。

4

2 回答 2

1

您需要阅读所有文件,然后对它们进行排序。恐怕没有捷径。

可以按最后修改时间排序,也可以解析日期组件,按日期排序

import glob
import os
import datetime

file_mask = 'file_*'
ts = 'file_%Y_%m_%d'
path_to_files = r'/foo/bar/zoo/'

def get_date_from_file(s):
    return datetime.datetime.strptime(s, ts)

all_files = glob.glob(os.path.join(path_to_files, file_mask))
sorted_files = sorted(all_files, key=lambda x: os.path.getmtime(x))[-5:]
sorted_by_date = sorted(all_files, key=get_date_from_file)[-5:]
于 2015-10-20T05:11:38.290 回答
0
import os

# list all files in the directory - returns a list of files
files = os.listdir('.')

# sort the list in reverse order
files.sort(reverse=True)

# the top 5 items in the list are the files you need
sorted_files = files[:-5]

希望这可以帮助!

于 2015-10-20T05:40:21.897 回答