Запись в файл происходит случайным образом

Я работаю над приложением, чтобы проверить новые эпизоды аниме, но я столкнулся с странной проблемой. при записи в файл запись происходит случайно в случайных местах в случайное время, но иногда она проходит без проблем. Я не могу понять это, ребята. Ниже приведена проблемная часть кода:

def write_results(results, result_dir):
    bar = progressbar.ProgressBar()
    for i in bar(range(100)):
        time.sleep(0.02)
        list = results
        for line in list:
            file = result_dir
            with open(file, "w", encoding="UTF-8") as file:
                list.sort()
                for line in list:
                    file.write('' + line + '\n')

def main():
    call(["python", "anime_app.py"])
    file_dir = r"C:/Users/username/PycharmProjects/ShowDownloader/filelist.txt"
    result_dir = r"C:/Users/username/PycharmProjects/ShowDownloader/results.txt"
    read = read_file(file_dir)
    content = get_content(read)
    site = read_site(content)
    results = write_results(site, result_dir)

Ошибка всегда одна и та же:

File "C:/Users/username/PycharmProjects/ShowDownloader/anime_web_app.py", line 15, in write_results
    with open(file, "w", encoding="UTF-8") as file:
OSError: [Errno 22] Invalid argument: 'C:/Users/username/PycharmProjects/ShowDownloader/results.txt'

Пример или это происходит в "случайное" время:

97% (97 of 100) |####################### | Elapsed Time: 0:00:03 ETA:  0:00:00Traceback (most recent call last):
  File "C:/Users/username/PycharmProjects/ShowDownloader/anime_web_app.py", line 62, in <module>
main()
  File "C:/Users/username/PycharmProjects/ShowDownloader/anime_web_app.py", line 59, in main
    results = write_results(site, result_dir)
  File "C:/Users/username/PycharmProjects/ShowDownloader/anime_web_app.py", line 15, in write_results
with open(file, "w", encoding="UTF-8") as file:
OSError: [Errno 22] Invalid argument: 'C:/Users/username/PycharmProjects/ShowDownloader/results.txt'`

2 ответа

Вы можете попробовать это так, io модуль лучше для записи UTF-8 файлы тогда codecs модуль, который в основном используется для их чтения:

import io

with io.open(file, "w", encoding="UTF-8") as file:
    ...

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

def write_results(results, result_dir):
try:
    pbar = ProgressBar()
    list = results
    write_file = result_dir
    with io.open(write_file, "w", encoding="UTF-8") as file:
        for line in pbar(list):
            time.sleep(0.1)
            list.sort()
            file.write('' + line + '\n')
except Exception:
    print("\n" + str(Exception))
    pass

def main():
loop = 0
while loop < 20:
    loop += 1
    call(["python", "anime_app.py"])
    file_dir = r"C://Users//username//PycharmProjects//ShowDownloader//filelist.txt"
    result_dir = r"C://Users//username//PycharmProjects//ShowDownloader//results.txt"
    read = read_file(file_dir)
    content = get_content(read)
    site = read_site(content)
    results = write_results(site, result_dir)
Другие вопросы по тегам