我有一个函数接受d(字典必须按键排列asciibetically)和文件名(可能存在或不存在的文件。)我必须有精确的格式写入此文件,该函数必须返回None。
格式: 字典的每个键值对应输出为:以键开头的字符串,后跟":#34;,选项卡,然后是值列表中的整数。每个整数后跟一个","和一个选项卡除了最后一个选项卡,后面应该跟一个换行符。
问题是当我关闭文件并运行我的测试人员时,它告诉我这个错误:
' STR'对象没有属性'关闭'
显然,这意味着我的文件不是文件,它是一个字符串。我该如何解决?
这是我当前的函数,它们一起工作以接受字典,对字典进行排序,打开/创建文件以进行写入,将字典以指定格式写入文件,可以作为字符串读取,然后关闭文件:
def format_item(key,value):
return key+ ":\t"+",\t".join(str(x) for x in value)
def format_dict(d):
return sorted(format_item(key,value) for key, value in d.items())
def store(d,filename):
with open(filename, 'w') as f:
f.write("\n".join(format(dict(d))))
filename.close()
return None
预期产出的例子:
IN:d = {' orange':[1,3],' apple':[2]}" OUT:存储(d," out.txt") 文件内容应该读作这个字符串:" apple:\ t2 \ norange:\ t1,\ t3 \ n"
答案 0 :(得分:2)
您实际上已将文件句柄设置为f,但您正尝试关闭文件名。
所以你的关闭命令应该是f.close()