gpt4 book ai didi

python - 从文件中写入和读取列表

转载 作者:IT老高 更新时间:2023-10-28 21:46:05 26 4
gpt4 key购买 nike

这是一个有点奇怪的请求,但我正在寻找一种将列表写入文件然后在其他时间读回的方法。

我无法重新制作列表,以便它们的格式/格式正确,如下例所示。

我的列表有如下数据:

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 字符串而不是字节字符串,您需要对它们进行编码。 (或者,更糟糕的是,如果它们是字节字符串,但不一定与系统默认的编码相同。)

如果它们可能有换行符或不可打印的字符等,您可以使用转义或引用。 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.

关于python - 从文件中写入和读取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17225287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com