#python #directory #filenames #subdirectory
Вопрос:
Я настроил следующий каталог:
---main
| |
| ---sub1
| | file1.xlsx
| |
| ---sub2
| | file2.xlsx
| |
| ---sub3
| file3.xlsx
Я хочу получить доступ к каждому файлу и вычислить среднее значение его A1:A10
ячеек, но пока file1.xlsx
он существует, я получаю эту ошибку:
IOError: [Errno 2] No such file or directory: 'file1.xlsx'
Мой код на данный момент (он предназначен для перебора многих «основных» каталогов):
import os
from openpyxl import load_workbook
directoryPath=r'C:UsersMyNameDesktopMainFolder'
os.chdir(directoryPath)
folder_list=os.listdir(directoryPath)
for folders, sub_folders, file in os.walk(directoryPath):
for name in file:
if name.endswith(".xlsx"):
filename=os.path.basename(name)
wb=load_workbook(filename)
cell_range = wb['A1':'A10']
#computing the mean value
Ошибка указывает на wb=load_workbook(filename)
. Почему я это получаю и как это исправить?
Ответ №1:
Пожалуйста, проверьте документацию для os.walk
. В нем говорится:
Чтобы получить полный путь (который начинается сверху) к файлу или каталогу в dirpath, выполните os.path.join(dirpath, имя).
Это означает, что правильный код должен выглядеть так:
for folder, sub_folders, files in os.walk(directoryPath):
for name in files:
if name.endswith(".xlsx"):
filename = os.path.join(folder, name)
wb = load_workbook(filename)
# ...