Запись в файл происходит случайным образом
Я работаю над приложением, чтобы проверить новые эпизоды аниме, но я столкнулся с странной проблемой. при записи в файл запись происходит случайно в случайных местах в случайное время, но иногда она проходит без проблем. Я не могу понять это, ребята. Ниже приведена проблемная часть кода:
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)