保存功能返回空列表

时间:2013-03-29 14:30:37

标签: python

这就是我要求做的事情:

  

save_friends(filename, friends_list)获取文件名和朋友列表,并以正确的格式将该列表写入文件。所以,例如,   save_friends('friends.csv',load_friends('friends.csv'))   应该用完全相同的内容覆盖朋友文件。

这是我的代码:

def save_friends(filename, friends_list): 
    """
    take a file name and a friends list and wrients that list
    to the file in the correct format

    save_friend(file, list) -> list
    """
    friends_list = []
    f = open(filename, 'w')
    for friend in friends_list:
        f.write(friend+ '\n')
    return friends_list 
    f.close()

问题是当我运行文本代码(学校提供的代码进行一些简单的测试)时,它告诉我

>>>save_friends('friends_output.csv', d)
[ ]

Traceback (most recent call last):
  File "E:\study\Yr 1\Semister1\CSSE1001\Assignment\sample_tests.py", line 84, in <module>
    assert res == None, "save_friends didn't return None"
AssertionError: save_friends didn't return None

那么,如果输入不是真正的列表,我怎么能返回'None'(就像在这种情况下输入'd')?

1 个答案:

答案 0 :(得分:2)

friends_list参数替换为函数顶部的空列表:

friends_list = []

删除该行。

此外,你的功能不应该返回任何东西;您还需要删除return行以传递分配测试,该测试期望None来自函数(这是默认值)。

请注意,通过提前返回,您永远不会在文件上调用.close()