python:ValueError:关闭文件的I / O操作

时间:2016-10-12 05:19:27

标签: python python-3.4

我的代码:

with open('pass.txt') as f:
        credentials = dict([x.strip().split(':') for x in f.readlines()]) # Created a dictionary with username:password items

        name_input = input('Please Enter username: ')

        if name_input in credentials:  # Check if username is in the credentials dictionary

            name_input = input('Please Enter new username: ')



        f.write(name_input)
        f.write(":")
        pass_input = input('Please Enter password: ')
        f.write(pass_input)
        f.write("\n")
        f.close()

        print('Registered')

我收到此错误:

Traceback (most recent call last):
  File "silwon.py", line 146, in <module>
    f.write(name_input)
ValueError: I/O operation on closed file.

用户输入相同用户名3次后如何使用sys.exit?

2 个答案:

答案 0 :(得分:4)

Python中的每个文件操作都是在以特定模式打开的文件上完成的。必须将模式指定为open函数的参数,它确定可以对文件执行的操作以及文件指针的初始位置。

在您的代码中,您已打开文件而没有除open函数名称之外的任何参数。如果未指定模式,则以默认模式打开文件 - 只读或'r'。这会将文件指针放在文件的开头,使您能够顺序扫描文件的内容,并将它们读入程序中的变量。为了能够将数据写入文件,您必须指定打开文件的模式,该模式允许将数据写入文件。可以从两个选项'w''w+''a''a+'中选择合适的模式。

'w'打开文件,只允许用户访问文件,而不是从中读取数据。它还将指针放在文件的开头并覆盖任何现有数据。 'w+'几乎相同,唯一的区别是您也可以从文件中读取。

'a'打开要写入的文件,并将文件指针放在文件的末尾,这样就不会覆盖文件的内容。 'a+'扩展了'a'的功能,允许从文件中读取。

使用适当的方式打开文件以满足您的要求,并通过将open命令修改为open('pass.txt', <mode>)来执行它。

答案 1 :(得分:0)

您需要定义要对该文件执行的操作。在您的情况下,您想写入文件,因此需要从以下模式中进行选择: 'w','w +','a'或'a +'