如何在一个.txt文件中存储大元组、列表和字典,然后将其赋给一个变量,以便在Python代码中使用它们?[duplicate]

2guxujil  于 2023-01-19  发布在  Python
关注(0)|答案(2)|浏览(106)
    • 此问题在此处已有答案**:

Easy to to serialize/toString a set of tuples in python(2个答案)
JSON serialize a dictionary with tuples as key(10个答案)
How to JSON serialize sets?(12个答案)
15小时前关门了。
此帖子在15小时前编辑并提交审查。
我目前正在研究pytest,对于预期的结果,元组或列表的形式使pytest类看起来很笨拙。
这不是一个重复的问题。在没有其他解决方案,他们描绘的txt文件。
例如,对于json文件,此问题的答案是:

path = "C:\\my_file.json"
my_var = json.load(open(path))

同样,如何对元组或列表执行此操作?
存储在一个. txt文件中是一个好的选择吗?如果是这样,如何将整个上下文正确地分配给一个变量?

68bkxrlz

68bkxrlz1#

正如juanpa在下面所评论的,您应该在另一个模块中定义您的预期结果,并通过该模块引用它们,以避免使您的实际测试类混乱。
如果这不是一个可接受的解决方案,请继续阅读。
你可以把你期望的结果存储到一个txt文件中,然后用ast.literal_eval把它解析成一个python对象,注意你的文本必须完全由python文字组成(你不能包含变量,例如
假设你有一个expected_result.txt,如下所示:

['1', 2, (3, 4, 5), {'6': 7}, {8, 9, 10}]
import ast

with open("expected_result.txt") as f:
    e = ast.literal_eval(f.read())

给出列表e = ['1', 2, (3, 4, 5), {'6': 7}, {8, 9, 10}]
检查该对象:

print(type(e))
for index, item in enumerate(e):
    print(index, type(item), item)

印刷品:

<class 'list'>
0 <class 'str'> 1
1 <class 'int'> 2
2 <class 'tuple'> (3, 4, 5)
3 <class 'dict'> {'6': 7}
4 <class 'set'> {8, 9, 10}

进一步阅读:

ar5n3qh5

ar5n3qh52#

对于.txt文件,您可以执行以下操作:

path = 'C:\\my_file.txt'
open_file = open(path, 'r')
var = open_file.read()

相关问题