在文件中搜索变量并使用python获取其值

时间:2012-07-08 10:49:13

标签: python

我想要一些存储在文件(文本文件或yaml文件)中的变量

例如,如果我将这些变量存储在文件

employee = ['Tom', 'Bob','Anny']
salary = 200
managers = ['Saly','Alice']

我希望用户输入列表名称或变量名称,例如

如果用户输入了员工并希望对列表值执行某些操作,那么用户应该访问employee[0]employee[1] ....等

如何编写一个python脚本,该脚本将转到文件中搜索正确的变量并让用户访问其值

由于

2 个答案:

答案 0 :(得分:3)

就像@Levon所说的那样,有几种方法可以让你这样做,最好的方法取决于你的问题背景。例如,你可以

  1. 通过格式化来自行阅读文件,例如,通过分隔符" ="在您的文件中
  2. 使用数据库存储数据
  3. 使用pickle或shelve序列化您的变量并稍后将其恢复。
  4. 将变量放在python模块中并导入

答案 1 :(得分:0)

假设您的文件内容有些一致,这种方法可能是一种方法:

更新:我添加了解析之前未提供的列表所需的代码。

代码获取文件中的所有数据,并将其作为适当的类型(即浮点数和列表)分配给变量。列表解析不是特别漂亮,但它是有用的。

import re
with open('data.txt') as inf:
    salary = 0
    for line in inf:
        line = line.split('=')
        line[0] = line[0].strip()
        if line[0] == 'employee':
            employee = re.sub(r'[]\[\' ]','', line[1].strip()).split(',')
        elif line[0] == 'salary':
            salary = float(line[1])
        elif line[0] == 'managers':
            managers = re.sub(r'[]\[\' ]','', line[1].strip()).split(',')

print employee
print salary
print managers

的产率:

['Tom', 'Bob', 'Anny']
200.0
['Saly', 'Alice']