簡體   English   中英

如何從文件名以日期結尾的目錄中僅加載最新文件?

[英]How to load only the most recent file from a directory where the filenames endswith the date?

我在一個名為的目錄/文件夾中有文件:

  1. sacoronavirus_total_number_vaccinated_type_2022-04-30.csv
  2. sacoronavirus_total_number_vaccinated_type_2022-05-31.csv
  3. sacoronavirus_total_number_vaccinated_type_2022-06-30.csv
  4. sacoronavirus_total_number_vaccinated_type_2022-07-31.csv
  5. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM