尝试访问文件中的列表并将其用作字符串

时间:2015-04-16 19:34:24

标签: python string list file

我希望能够在文件中使用列表将代码“上传”到程序中。

NotePad文件:

savelist = ["Example"]
namelist = ["Example2"]

Python代码:

with open("E:/battle_log.txt", 'rb') as f:
    gamesave = savelist[(name)](f)
    name1 = namelist [(name)](f)
    print ("Welcome back "+name1+"! I bet you missed this adventure!")
    f.close()
    print savelist
    print namelist

我希望这是输出:

Example
Example2

3 个答案:

答案 0 :(得分:0)

看起来您正在尝试序列化程序状态,稍后重新加载它!您应该考虑使用数据库,甚至只考虑使用pickle

import pickle

savelist = ["Example"]
namelist = ["Example2"]

obj_to_pickle = (savelist, namelist)

with open("path/to/savefile.pkl", 'wb') as p:
    pickle.dump(obj_to_pickle, p)
    # save data

with open('path/to/savefile.pkl', 'rb') as p:
    obj_from_pickle = pickle.load(p)
    savelist, namelist = obj_from_pickle
    # load data 

答案 1 :(得分:0)

有几种选择:

  • 使用.py扩展名保存您的记事本文件并导入它。只要它包含有效的python代码,就可以访问所有内容
  • 将文本作为字符串加载并执行(例如,通过eval())
  • 将信息存储在易于阅读的配置文件(例如YAML)中,并在需要时进行解析
  • 预先计算数据并将其存储在pickle文件中

如果您无法控制谁将提供该文件,前两个是有风险的,因为有人可以在输入中插入恶意代码。

答案 2 :(得分:0)

只要文件与您的程序所在的文件夹在同一个文件夹中,您就可以直接导入它。有点像这样:

import example.txt

或:

from example.txt import*

然后通过两种方式之一访问它。第一个:

print Example.savelist[0]
print Example.namelist[0]

第二种方式:

print savelist[0]
print namelist[0]