写入文件随机发生故障

时间:2017-08-31 10:39:48

标签: python filepath

我在应用程序上检查新的动漫剧集,但我遇到了一个奇怪的问题。 当写入文件时,写入随机时间在随机点随机失败,但有时它运行没有问题。我无法想象这个人。 以下是代码的问题部分:

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 个答案:

答案 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)