Ошибка доступа при чтении файла: PermissionError: [Errno 13] Permission denied

Рейтинг: 0Ответов: 1Опубликовано: 10.06.2023

Не могу понять в чем ошибка, хочу считывать содержимое файлов для индексации в Elasticsearch, но отказывает в доступе

import os
import chardet
from elasticsearch import Elasticsearch

es = Elasticsearch(['localhost'], port=9200)

def index_documents(directory):
    files = os.listdir(directory)

    for file_name in files:
        file_path = os.path.join(directory, file_name)
        with open(file_path, 'rb') as file:
            raw_data = file.read()
            result = chardet.detect(raw_data)
            encoding = result['encoding']

        try:
            with open(file_path, 'r', encoding=encoding) as file:
                content = file.read()

                document = {
                    'content': content
                }

                es.index(index='my_index', body=document)

        except UnicodeDecodeError:
            print(f"Ошибка чтения файла {file_path}. Не удалось определить кодировку.")

directory_name = 'D:\\my_index_data'
index_documents(directory_name)

Ошибка:

Traceback (most recent call last):
  File "C:\Users\Jonny\PycharmProjects\pythonProject1\main.py", line 38, in <module>
    index_documents(directory_name)
  File "C:\Users\Jonny\PycharmProjects\pythonProject1\main.py", line 16, in index_documents
    raw_data = file.read()
               ^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied

Ответы

▲ 1

Очевидно, что Ваша программа куда-то "не туда" лезет. Что бы это проверить, замените оператор

raw_data = file.read()

На

try:
    raw_data = file.read()
except PermissionError:
    print(file_name)
    exit(-1)

А потом в проводнике посмотрите свойства этого файла - что с ним не так ?