协慌网

登录 贡献 社区

使用 Python 将列表写入文件

这是将列表写入文件的最干净的方法,因为writelines()不会插入换行符吗?

file.writelines(["%s\n" % item  for item in list])

似乎会有一种标准的方法...

答案

您可以使用循环:

with open('your_file.txt', 'w') as f:
    for item in my_list:
        f.write("%s\n" % item)

在 Python 2 中,您也可以使用

with open('your_file.txt', 'w') as f:
    for item in my_list:
        print >> f, item

如果您热衷于单个函数调用,请至少删除方括号[] ,以便一次打印一个字符串(一个 genexp 而不是一个 listcomp)- 没有理由占用所有实现整个字符串列表所需的内存。

您将如何处理该文件?该文件是否存在于人类或具有明确互操作性要求的其他程序中?

如果您只是尝试将列表序列化到磁盘以供同一 python 应用程序稍后使用,则应该对列表进行腌制。

import pickle

with open('outfile', 'wb') as fp:
    pickle.dump(itemlist, fp)

读回:

with open ('outfile', 'rb') as fp:
    itemlist = pickle.load(fp)

比较简单的方法是:

with open("outfile", "w") as outfile:
    outfile.write("\n".join(itemlist))

您可以使用生成器表达式来确保项目列表中的所有项目都是字符串:

with open("outfile", "w") as outfile:
    outfile.write("\n".join(str(item) for item in itemlist))

请记住,所有itemlist列表都需要在内存中,因此,请注意内存消耗。