python: ValueError: I/O operation on closed file
python: ValueError: I/O operation on closed file
我的代码:
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?
Python中的每个文件操作都是在以特定模式打开的文件上完成的。模式必须指定为打开函数的参数,它决定了可以对文件进行的操作,以及文件指针的初始位置。
在您的代码中,您打开文件时除了打开函数的名称外没有任何参数。当未指定模式时,文件以默认模式打开 - 只读,或 'r'
。这会将文件指针放在文件的开头,使您能够按顺序扫描文件的内容,并将它们读入程序中的变量。为了能够将数据写入文件,您必须指定一种打开文件的模式,以便将数据写入文件。可以从两个选项中选择合适的模式,'w'
或 'w+'
和 'a'
或 'a+'
。
'w'
打开文件并授予用户只能将数据写入文件的权限,不能从中读取数据。它还将指针放在文件的开头并覆盖任何现有数据。 'w+'
几乎相同,唯一的区别是您也可以从文件中读取。
'a'
以写入方式打开文件,并将文件指针置于文件末尾,因此您不会覆盖文件内容。 'a+'
扩展了 'a'
的功能,也允许从文件中读取。
根据自己的需要使用合适的文件打开方式,将打开命令修改为open('pass.txt', <mode>)
.
即可执行
您需要定义要对文件执行的操作。在您的情况下,您想要写入文件,因此您需要从以下模式 select:
'w'、'w+'、'a' 或 'a+'
我的代码:
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?
Python中的每个文件操作都是在以特定模式打开的文件上完成的。模式必须指定为打开函数的参数,它决定了可以对文件进行的操作,以及文件指针的初始位置。
在您的代码中,您打开文件时除了打开函数的名称外没有任何参数。当未指定模式时,文件以默认模式打开 - 只读,或 'r'
。这会将文件指针放在文件的开头,使您能够按顺序扫描文件的内容,并将它们读入程序中的变量。为了能够将数据写入文件,您必须指定一种打开文件的模式,以便将数据写入文件。可以从两个选项中选择合适的模式,'w'
或 'w+'
和 'a'
或 'a+'
。
'w'
打开文件并授予用户只能将数据写入文件的权限,不能从中读取数据。它还将指针放在文件的开头并覆盖任何现有数据。 'w+'
几乎相同,唯一的区别是您也可以从文件中读取。
'a'
以写入方式打开文件,并将文件指针置于文件末尾,因此您不会覆盖文件内容。 'a+'
扩展了 'a'
的功能,也允许从文件中读取。
根据自己的需要使用合适的文件打开方式,将打开命令修改为open('pass.txt', <mode>)
.
您需要定义要对文件执行的操作。在您的情况下,您想要写入文件,因此您需要从以下模式 select: 'w'、'w+'、'a' 或 'a+'