我的代码:
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?
答案 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 +'