python - 使用python 3.0输出文件时出错

标签 python io

我不确定为什么会收到此错误。我的程序中的一切似乎都运行良好。该程序基本上是一个简单的管理系统,用于存储用户名和密码帐户。

我得到的错误是,ValueError:对已关闭文件进行 I/O 操作。

程序成功写入第一个帐户,但其他帐户未存储在 .txt 文件中

这是我收到错误的代码

if savedata == 'y': 
print ("\nData Successfuly Saved!")
filehandle = open(filename, "r+")

    for username, password in store_data.items():
        print(username, ":",password)
        password = password.replace("\n","")
        filehandle.write(username) # it says this line is my error
        filehandle.write(":") 
        filehandle.write(password)
        filehandle.write("\n")
        filehandle.close()  

   else:
 ("Exiting Application Terminal...")    

最佳答案

以下应该可以解决问题:

if savedata == 'y': 
    print ("\nData Successfully Saved!")

    with open(filename, "w") as filehandle:
        for username, password in store_data.items():
            print(username, ":", password)
            password = password.replace("\n","")
            filehandle.write("{}:{}\n".format(username, password))
else:
    print("Exiting Application Terminal...") 

您在每次迭代后关闭文件,因为您只打开它一次,这就是只保存一个条目的原因。

使用 Python 的 with 结构也更安全,它会自动为您关闭文件。

如果您希望附加到现有文件,请使用“a”作为模式。

关于python - 使用python 3.0输出文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32984571/

相关文章:

java - 如何在java中对 "\"进行字符串分割?

python - 在 n 时间后,我将如何停止 while 循环?

java - 在外部存储中创建文件夹

c++ - 在 Windows 上增加 io 优先级?

python - Matplotlib 在刻度标签(字符串)中显示美元符号

c - 文件写操作前的触发函数

Haskell IO 执行顺序

python - 如何确定Python中常见图像类型的类型和大小?

python - 将字符串与列表中的元素进行比较

python - Flask-SQLAlchemy join 是否可以从一个表中选择所有列并从另一个表中指定一些列?