嗨,我想在customer.txt文件中添加一个客户名
[1, “Amin Milani Fard”, “Columbia College”, 778]
[2, “Ali”, “Douiglas College”, 77238]
def addingcustomer(file_name,new_name):
f=open(file_name,'w')
for line in f:
if new_name==line:
return ("already existed")
elif new_name!=line:
f.write(str(new_name)+"\n")
return ("succesfully added")
它给了我这个错误:
Traceback (most recent call last):
File "C:\Users\Yuvinng\Desktop\Customer assignment 1\Customer assignment 2", line 77, in <module>
function(c)
File "C:\Users\Yuvinng\Desktop\Customer assignment 1\Customer assignment 2", line 26, in function
print (addingcustomer("customerlist.txt",x))
File "C:\Users\Yuvinng\Desktop\Customer assignment 1\Customer assignment 2", line 60, in addingcustomer
for line in f:
io.UnsupportedOperation: not readable
您正在使用
w
打开文件,这意味着您请求只写权限。然后尝试遍历文件中的所有行,这显然是一个读取操作。IIRC您应该使用r+
、w+
或a+
打开文件,这取决于您想要的行为(read here for a description)。此外,正如mh512所提到的,当您使用完文件后,使用f.close()
关闭文件通常是一个好主意。不过,您可能还想重新考虑您的算法。
对于它处理的每一行,如果它等于新名称,则返回
"already existed"
,或者将新名称写入文件并返回。因此,这个循环总是在第一行之后返回。此外,即使该名称在以后的某个时间点已经存在,如果它不在第一行,它也将再次写入该文件。因为这是家庭作业,我不会给你完整的解决方案,但作为一个提示,你可能想在你决定做什么之前,循环所有的行。以下是一些可能导致错误的原因:
你的开头是:“我本来想在acustomer.txt文件中添加一个客户名”,但你发布的堆栈跟踪显示,你试图读取的文件是“customerlist.txt”。
您正在使用带有“w”的文件打开函数作为写入权限。尝试使用“r”或“wr”。
E
完成后,您可能也想关闭文件。
相关问题 更多 >
编程相关推荐