Python возвращает пустую строку при чтении файла, а содержимое самого файла удаляет

Открываю файлы в цикле из списка, почему-то сегодня что-то сломалось, и при открытии файла возвращается пустая строка, а содержимое самого файла удаляется.

for i in range(len(channels_history_list)):
    with open(f"./output/{channels_history_list[i]}", "r", encoding="utf-16") as channel_history:
       text = channel_history.read().lower()
       print(text)

Лог:

18:31:46.44 >>> Call to zero_morph in File "C:\Users\PycharmProjects\NLTK\main.py", line 55
18:31:46.44 .......... text = ''

18:31:46.44   55 |     def zero_morph(text):

Пример файла по ссылке

EDIT:

channels_history_list = []
for root, dirs, files in os.walk("./output/"):
    for name in files:
        if "frequency" not in name and name.endswith(".txt"):
            channels_history_list.append(name)
print(channels_history_list)
start_time = time.time()
    
print(os.getcwd())
for channel in channels_history_list:
    print(channel)
    # fname = r"C:\Users\Vadik\PycharmProjects\NLTK\output\" + channel

    with open(f"C:\\Users\\Vadik\\PycharmProjects\\NLTK\\output\\{channel}", "r", encoding="utf-16") as channel_history:
        text = channel_history.read().lower()
        print(text)

Ответы (1 шт):

Автор решения: MarianD

Для меня ваш код никакой проблемы не вызывает, всё работает так, как вы хотели (с вашим примером файла), выводится полный текст файла со строчными буквами.

Значит, ошибка не в программе, а может быть

  • в неправильном пути к вашим файлам (./output/), или
  • неправильном списке этих файлов (channels_history_list).

Попробуйте заменить путь к файлам на абсолютный и проверите правильность списка файлов (например может быть, что он пустой).

Я создал такой список файлов:

channels_history_list = ["skabeeva_after_24.02.2022.txt", "skabeeva_after_24.02.2022.txt"]

(дважды тот же самый ваш файл, который я скопировал в правильную папку).


Между прочим, более питонский подход такой (разница в первых двух строках):

for channel in channels_history_list:
    with open(f"./output/{channel}", encoding="utf-16") as channel_history:
       text = channel_history.read().lower()
       print(text)
→ Ссылка