[英]How to load only the most recent file from a directory where the filenames startswith the date?
[英]How to load only the most recent file from a directory where the filenames endswith the date?
我在一個名為的目錄/文件夾中有文件:
sacoronavirus_total_number_vaccinated_type_2022-04-30.csv
sacoronavirus_total_number_vaccinated_type_2022-05-31.csv
sacoronavirus_total_number_vaccinated_type_2022-06-30.csv
sacoronavirus_total_number_vaccinated_type_2022-07-31.csv
sacoronavirus_total_number_vaccinated_type_2022-08-31.csv
該文件夾將使用與上述相同格式的每個月的文件進行更新。 例如
sacoronavirus_total_number_vaccinated_type_2022-09-30.csv
sacoronavirus_total_number_vaccinated_type_2022-10-31.csv
我只想加載最近一個月的.csv 到 pandas dataframe,而不是所有文件。 我該怎么做(也許使用 glob)?
下面的代碼通過元數據加載日期獲取最多的文件,但不是文件名的字符串
import glob
import os
list_of_files = glob.glob('/path/to/folder/*') # * means all if need specific format then *.csv
latest_file = max(list_of_files, key=os.path.getctime)
print(latest_file)
請注意,同一目錄中還有其他文件具有不同的前綴。
如果所有文件都具有相同的前綴,那么您需要做的就是獲取排序后的名稱列表中的最后一個文件,因為 ISO 8601 日期字符串在字典順序上是可比較的:
import glob
import os
list_of_files = sorted(glob.glob('/path/to/folder/.csv*'))
latest_file = list_of_files[-1]
print(latest_file)
事實上,只是
latest_file = max(glob.glob('/path/to/folder/.csv*'))
如果您不需要任何完整列表,也可以使用。
這是 select 使用pathlib
的文件名的最新文件的命題。
from pathlib import Path
import pandas as pd
dir_files = r'/path/to/folder/*'
dico={}
for file in Path(dir_files).glob('sacoronavirus_total_number_vaccinated_*.csv'):
dico[file.stem.split('_')[-1]] = file
max_date = max(dico) # There is no need to parse ISO 8601 dates
然后,您可以使用pandas.read_csv
並傳遞文件路徑來創建 dataframe。
df = pd.read_csv(dico[max_date])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.