如何将多个列表写入一个文本文件,其中每个列表都写入一个新行?
How to write multiple lists into a text file where each list is written into a new line?
我有两个 python 列表:
a_list = [1, 2, 3]
b_list = [4, 5, 6]
我怎样才能做到以下几点:
创建新文本文件 ---> 将列表转换为 json 字符串 ---> 将列表写入文件(每个列表在文件中应该有自己的行) ---> 打开文件---> 将每一行读入一个新变量并将 json 字符串转换回 python 列表?
我卡在这里了:
import json
a_list = [1, 2, 3]
b_list = [4, 5, 6]
with open('test.txt', 'w') as f:
f.write(json.dumps(a_list))
f.write(json.dumps(b_list))
(json字符串写在同一行。)
谢谢
使用JSON
首先你应该将这些列表放入字典中
d = {
"a" : a_list,
"b" : b_list
}
然后你可以把它转储到.json
文件
json.dump(d,open("file.json","w"))
到read/load的文件,可以使用
d = json.load(open("file.json","r"))
这将 return 原始字典。即,
{'a': [1, 2, 3], 'b': [4, 5, 6]}
使用 Pickle
倾销
pickle.dump(a_list,open("b.ls","wb"))
pickle.dump(b_list,open("a.ls","wb"))
加载中
pickle.load(open("a.ls","rb"))
pickle.load(open("b.ls","rb"))
仅供参考:我以前从未使用过 pickle :)
比较json
pickle 协议和
JSON(JavaScript 对象表示法):
JSON是一种文本序列化格式(输出unicode文本,
尽管大多数时候它会被编码为 utf-8),而 pickle
是二进制序列化格式;
JSON 是 human-readable,而 pickle 不是;
JSON 可互操作并在 Python 之外广泛使用
生态系统,而 pickle 是 Python-specific;
JSON,默认情况下,只能表示Pythonbuilt-in的一个子集
类型,没有自定义 类;泡菜可以代表一个非常大的
Python 类型的数量(其中许多是自动的,通过巧妙的使用
Python 的内省设施;复杂的情况可以通过
实现特定对象 API);
与 pickle 不同,反序列化不受信任 JSON 本身不会创建
任意代码执行漏洞。
tldr
- pickle 变小了
- json 更快
- json 是人类可读的(pickle 文件例如:�]q)
- json 更安全(在这种情况下不相关)
我有两个 python 列表:
a_list = [1, 2, 3]
b_list = [4, 5, 6]
我怎样才能做到以下几点:
创建新文本文件 ---> 将列表转换为 json 字符串 ---> 将列表写入文件(每个列表在文件中应该有自己的行) ---> 打开文件---> 将每一行读入一个新变量并将 json 字符串转换回 python 列表?
我卡在这里了:
import json
a_list = [1, 2, 3]
b_list = [4, 5, 6]
with open('test.txt', 'w') as f:
f.write(json.dumps(a_list))
f.write(json.dumps(b_list))
(json字符串写在同一行。)
谢谢
使用JSON
首先你应该将这些列表放入字典中
d = {
"a" : a_list,
"b" : b_list
}
然后你可以把它转储到.json
文件
json.dump(d,open("file.json","w"))
到read/load的文件,可以使用
d = json.load(open("file.json","r"))
这将 return 原始字典。即,
{'a': [1, 2, 3], 'b': [4, 5, 6]}
使用 Pickle
倾销
pickle.dump(a_list,open("b.ls","wb"))
pickle.dump(b_list,open("a.ls","wb"))
加载中
pickle.load(open("a.ls","rb"))
pickle.load(open("b.ls","rb"))
仅供参考:我以前从未使用过 pickle :)
比较json
pickle 协议和 JSON(JavaScript 对象表示法):
JSON是一种文本序列化格式(输出unicode文本, 尽管大多数时候它会被编码为 utf-8),而 pickle 是二进制序列化格式;
JSON 是 human-readable,而 pickle 不是;
JSON 可互操作并在 Python 之外广泛使用 生态系统,而 pickle 是 Python-specific;
JSON,默认情况下,只能表示Pythonbuilt-in的一个子集 类型,没有自定义 类;泡菜可以代表一个非常大的 Python 类型的数量(其中许多是自动的,通过巧妙的使用 Python 的内省设施;复杂的情况可以通过 实现特定对象 API);
与 pickle 不同,反序列化不受信任 JSON 本身不会创建 任意代码执行漏洞。
tldr
- pickle 变小了
- json 更快
- json 是人类可读的(pickle 文件例如:�]q)
- json 更安全(在这种情况下不相关)