如何从文件中读取列表和int?

时间:2017-05-19 17:31:59

标签: python

我正在尝试制作一个基于Enigma的编码系统,但我想补充一点。为了使程序可以通过用户id进行定制,比如创建“文件”,其中包含我的prgramm将使用的参数,然后加密消息。它包括列表和整数。我怎么读它们?

我尝试过使用拆分方法并用“/”分隔我的列表,但这些列表被视为字符串。

以下是我要按顺序分配的参数的示例,list1,list2,list3,list4,trigger1,trigger2,trigger3,我试图用“/”分隔:

[6,18,20,12,17,26,19,4,10,22,13,7,14,1,21,9,2,16,3,23,24,8,15,11,25,5]/[1,-5,6,3,-4,2,-4,-4,-3,5,-1,1,-2,-2,-1,3,4,2,5,-4,-4,-4,2,-2,1,5]/[5,-1,-1,-1,-1,1,4,-3,-1,4,1,1,-4,2,-5,4,0,-3,-1,1,-2,0,2,2,-1,-3]/[2,-1,2,0,-3,2,-1,-1,0,2,-1,2,-2,-1,1,4,2,0,-2,-5,2,-1,3,0,-3,-1]/11/5/17
f=open("param.txt")
param=f.read()
list_tbl,param=param.split("/",1)
list_pattern1,param=param.split("/",1)
list_pattern2,param=param.split("/",1)
list_pattern3,param=param.split("/",1)
trigger1,param=param.split("/",1)
trigger2,param=param.split("/",1)
trigger3=param

当我尝试使用列表时,它们不能被使用,因为它们是字符串。

1 个答案:

答案 0 :(得分:1)

看看ast.literal_eval基本上可以做你想做的事情,即用这样的字符串制作一个列表:

from ast import literal_eval
my_string = '[0, 1, 2, 3]'
my_list = literal_eval(my_string)

要创建多个变量,您可以使用字典,然后只需通过一个键来获取它,例如:

my_dict = {}
for i in range(10):
    my_dict['list' + str(i)] = <some value>

这绝对比在创建每个变量时浪费行更漂亮。