Python文件i / 0:错误 - 当给定的文件名是字符串时如何写入文件?

时间:2017-04-17 22:17:00

标签: python-3.x io fwrite

我有一个函数接受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"

1 个答案:

答案 0 :(得分:2)

您实际上已将文件句柄设置为f,但您正尝试关闭文件名。

所以你的关闭命令应该是f.close()