Python: существующий файл не найден (ошибка ввода-вывода: [Errno 2]) при использовании ОС.

#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)
            # ...