Перебирайте разные папки

#python #pandas #operating-system

Вопрос:

В настоящее время я нахожусь в каталоге со множеством разных папок. Эти папки называются по дате и времени «YYYY_MM_DD_HH-MM-SS-SSS».

Теперь мне нужно перебирать из папки в папку:

А) сохраняйте каждую дату и время из имен папок в непрерывном массиве.

Б) зайдите в эту папку, прочитайте файл .xlxs и сохраните данные в массиве

В) Выйдите из папки и перейдите в следующую папку.

К сожалению, у меня есть только одна идея для B, что-то вроде:

  pd.read_excel(("{fname}/NAMEOFEXCELFILE.xlsx".format(fname = newpath)), skiprows = 1, header = None, usecols = [5])
 

У кого-нибудь есть какие-либо идеи по части «Перемещение из папки в папку», включая часть экономии времени?

В принципе, после запуска кода мне нужен массив со временем и массив, такой же длины, как и массив, со значениями из файлов Excel.

Ответ №1:

Вы можете использовать Path.iterdir для перебора папок. Предполагая, что текущий рабочий каталог содержит все папки datetime, и они являются единственными, что там есть, вы можете перебирать каждую папку следующим образом:

 from pathlib import Path

# ...

folder_names = []
spreadsheet_contents = []

current_directory = Path.cwd()
for folder in current_directory.iterdir():
    folder_names.append(folder.name)

    spreadsheet_path = folder / "spreadsheet.xlsx"
    spreadsheet_contents.append(pd.read_excel(spreadsheet_path, ...))
 

Обратите внимание, что имена папок по-прежнему будут строками. Если вы хотите проанализировать фактические даты и время, вы можете использовать datetime.strptime .

Комментарии:

1. Большое спасибо! У вас также есть идея для случая различных именованных файлов Excel?

Ответ №2:

Модуль glob может помочь вам перебирать папки и вложенные папки https://docs.python.org/3/library/glob.html