#python #python-3.x #pandas #jupyter-lab
Вопрос:
У меня возникли проблемы с извлечением данных из папки, содержащей два csv-файла, которые каждый день обновляются, чтобы заменить более старый из двух файлов. Поскольку я всегда хочу извлечь последний/-1/самый последний файл, который находится в этой папке, какой запрос я могу выполнить, чтобы извлечь новейший файл с помощью pandas в Python 3 на JupyterLab? Когда я печатаю данные, которые хочу извлечь, я не получаю их в качестве ответа.
Код Python3 в JupyterLab:
#install prep %conda install pandas import pandas as pd #install import glob #naming path for most recent file FolderPath="Pathname of folder containing the two most recent csv files" import os #display name of most recent file in the pathname folder aka FolderPath NewestData = os.listdir(FolderPath) print(NewestData[-1]) #pull data from 'NewestData' UpdatedData = pd.read(NewestData[-1]) print(UpdatedData)
Комментарии:
1. Правильный ли формат данных? Кроме того, это может быть папка и т. Д. Вам также необходимо добавить каталог папок перед
NewestData[-1]
, потому что он не добавляет его автоматически.2. Кроме того,
os.listdir()
не гарантирует какого-либо конкретного порядка для возвращаемых имен. Сначала вы должны отсортировать результат.3. Используйте glob, чтобы ограничить только CSV.
glob.glob(os.path.join(FolderPath, "*.csv"))
. Тогда вам все равно придется выяснить, какая из них самая новая. Есть ли подсказка в имени файла файла? Вы можете использоватьos.stat(filename).st_mtime
для последнего измененного файла. Это не всегда работает — если файл был перемещен в каталог, его mtime не меняется. В Windows можно использоватьst_ctime
, но не в Linux, где вам действительно нужно изменить файл, чтобы получить измененное время.
Ответ №1:
Если вы можете гарантировать, что указанный файл действительно является файлом, а не папкой, это должно сработать.
FolderPath="C:/testpath" NewestData = os.listdir(FolderPath) UpdatedData = pd.read(os.path.join(FolderPath, NewestData[-1]))
Единственное отличие заключается в том, что вы не добавляете FolderPath
префикс в перечисленные каталоги, потому что ОС не делает этого автоматически.
Комментарии:
1.
os.path.join()
было бы лучшим способом объединить компоненты пути. Вам не нужно заботиться о конечной косой черте, используя ее.2. Спасибо вам за этот AKX, решение, которое вы предоставили в этом ответе, сработало.