我在应用程序上检查新的动漫剧集,但我遇到了一个奇怪的问题。 当写入文件时,写入随机时间在随机点随机失败,但有时它运行没有问题。我无法想象这个人。 以下是代码的问题部分:
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'`
答案 0 :(得分:1)
您可以这样尝试,io
模块更适合编写UTF-8
文件,然后codecs
模块主要用于阅读它们:
import io
with io.open(file, "w", encoding="UTF-8") as file:
...
答案 1 :(得分:1)
我不知道我做了什么,但是稍微清理了一下代码,删除了额外的循环并修复了进度条,现在写得很好。固定代码如下。
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)