我如何写一个列表文件?writelines()不插入换行符,所以我需要这样做:
f.writelines([f"{line}\n" for line in lines])
我如何写一个列表文件?writelines()不插入换行符,所以我需要这样做:
f.writelines([f"{line}\n" for line in lines])
当前回答
这个逻辑首先将list中的项转换为字符串(str)。有时列表包含一个元组,如
alist = [(i12,tiger),
(113,lion)]
这个逻辑将把每个元组写入一个新行。我们可以在读取文件时加载每个元组时使用eval:
outfile = open('outfile.txt', 'w') # open a file in write mode
for item in list_to_persistence: # iterate over the list items
outfile.write(str(item) + '\n') # write to the file
outfile.close() # close the file
其他回答
使用Python 3和Python 2.6+语法:
with open(filepath, 'w') as file_handler:
for item in the_list:
file_handler.write("{}\n".format(item))
这是平台独立的。它还使用换行符结束最后一行,这是UNIX的最佳实践。
从Python 3.6开始,"{}\n".format(item)可以用f-string替换:f"{item}\n"。
你打算怎么处理这个文件?这个文件是否存在于人类,或其他具有明确互操作性要求的程序?
如果您只是试图将列表序列化到磁盘,以便稍后由同一python应用程序使用,则应该pickle该列表。
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
再读一遍:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
还有另一种方式。使用simplejson序列化为json(在python 2.6中包含为json):
>>> import simplejson
>>> f = open('output.txt', 'w')
>>> simplejson.dump([1,2,3,4], f)
>>> f.close()
如果你检查output.txt:
[1, 2, 3, 4]
这很有用,因为它的语法是python的,它是人类可读的,并且它可以被其他语言的其他程序读取。
序列化列表到文本文件与逗号分隔值
mylist = dir()
with open('filename.txt','w') as f:
f.write( ','.join( mylist ) )
因为我很懒....
import json
a = [1,2,3]
with open('test.txt', 'w') as f:
f.write(json.dumps(a))
#Now read the file back into a Python list object
with open('test.txt', 'r') as f:
a = json.loads(f.read())