这是一个有点奇怪的请求,但我正在寻找一种将列表写入文件然后在其他时间读回的方法。
我无法重新制作列表,以便它们正确形成/格式化,如下面的示例所示。
我的列表有如下数据:
test
data
here
this
is one
group :)
test
data
here
this
is another
group :)
这是一个有点奇怪的请求,但我正在寻找一种将列表写入文件然后在其他时间读回的方法。
我无法重新制作列表,以便它们正确形成/格式化,如下面的示例所示。
我的列表有如下数据:
test
data
here
this
is one
group :)
test
data
here
this
is another
group :)
如果您不需要它是人类可读/可编辑的,最简单的解决方案就是使用pickle
.
来写:
with open(the_filename, 'wb') as f:
pickle.dump(my_list, f)
读书:
with open(the_filename, 'rb') as f:
my_list = pickle.load(f)
如果您确实需要它们是人类可读的,我们需要更多信息。
如果my_list
保证是一个没有嵌入换行符的字符串列表,只需每行写一个:
with open(the_filename, 'w') as f:
for s in my_list:
f.write(s + '\n')
with open(the_filename, 'r') as f:
my_list = [line.rstrip('\n') for line in f]
如果它们是 Unicode 字符串而不是字节字符串,你会想要encode
它们。(或者,更糟糕的是,如果它们是字节字符串,但不一定与系统默认的编码相同。)
如果它们可能有换行符或不可打印的字符等,您可以使用转义或引用。Python 在标准库中内置了多种不同类型的转义。
让我们使用unicode-escape
这里来一次解决上述两个问题:
with open(the_filename, 'w') as f:
for s in my_list:
f.write((s + u'\n').encode('unicode-escape'))
with open(the_filename, 'r') as f:
my_list = [line.decode('unicode-escape').rstrip(u'\n') for line in f]
您还可以在 2.x 中使用 3.x 样式的解决方案,使用codecs
模块或io
模块:*
import io
with io.open(the_filename, 'w', encoding='unicode-escape') as f:
f.writelines(line + u'\n' for line in my_list)
with open(the_filename, 'r') as f:
my_list = [line.rstrip(u'\n') for line in f]
* TOOWTDI,那么这是一种明显的方法吗?这取决于... 对于简短版本:如果您需要使用 2.6 之前的 Python 版本,请使用codecs
; 如果没有,请使用io
.
只要您的文件具有一致的格式(即换行符),只需基本的文件 IO 和字符串操作即可轻松完成:
with open('my_file.txt', 'rU') as in_file:
data = in_file.read().split('\n')
这会将您的数据文件存储为项目列表,每行一个。然后将其放入文件中,您将执行相反的操作:
with open('new_file.txt', 'w') as out_file:
out_file.write('\n'.join(data)) # This will create a string with all of the items in data separated by new-line characters
希望这符合您的要求。
我们先定义一个列表:
lst=[1,2,3]
您可以直接将列表写入文件:
f=open("filename.txt","w")
f.write(str(lst))
f.close()
要首先从文本文件中读取列表,请读取文件并将其存储在变量中:
f=open("filename.txt","r")
lst=f.read()
f.close()
变量的类型lst
当然是字符串。eval
您可以使用函数将此字符串转换为数组。
lst=eval(lst)