我有一个zip文件,其中包含多个带日期的文件夹,在每个文件夹中,我都有一个datetamp.txt,其中包含日期和多个csv文件。
例如:
在Archives.zip中: \文件夹1 \ Folder2
在每个文件夹中:
DATESTAMP.txt
a.csv
b.csv
因此,我从上游放下了这个zip文件,其中包含多天的数据,日期信息包含在datestamp.txt文件中(只是一个日期戳,如20200903),如何处理最新的csv日期文件? (Folder1 / datestamp.txt:20200903,Folder2 / datestamp.txt:20200904,所以我只想拥有Folder2的csv文件)
我试图先从txt文件中读取日期并对它们进行排序。
from zipfile import ZipFile
zip_file = ZipFile('data\Archives.zip')
timestamp={text_file.filename: pd.read_csv(zip_file.open(text_file.filename),header=None)
for text_file in zip_file.infolist() if text_file.filename.endswith('.txt')}
dfs = {text_file.filename: pd.read_csv(zip_file.open(text_file.filename))
for text_file in zip_file.infolist() if text_file.filename.endswith('.csv')}
有没有一种方法可以直接从datestamp.txt获取日期,并且只读取最新的a.csv和b.csv?
谢谢
答案 0 :(得分:1)
这里是查找最新日期和相应文件夹的方法。我使用defaultdict来显示是否有多个具有最新日期的文件夹。
from collections import defaultdict
# create test data
metadata = [
'Folder1/datestamp.txt: 20200903', # Sept 3
'Folder2/datestamp.txt: 20200904',
'Folder2/datestamp.txt: 20200903', # Sept 3 also (impossible?)
]
# initial value is empty list; just append without checking first
latest = defaultdict(list)
for m in metadata:
folder = m.split('/', 1)[0]
datestamp = m.rsplit(' ', 1)[-1]
latest[datestamp].append(folder)
print('max date :', max(latest))
print('folder(s) :', latest[max(latest)])
max date : 20200904
folder(s) : ['Folder2']