什么是在python中读取属性文件的快速方法?

jur*_*ury 12 python configuration-files

我有一个格式的文件

VarName=Value
.
.
Run Code Online (Sandbox Code Playgroud)

我想把它读成一个哈希,这H("VarName")将返回值.

什么是快速的方式?(读取一组字符串,将所有字符串拆分为等号,然后将其放入哈希值?

我正在使用python.

Ste*_*ven 21

oneliner回答:

H = dict(line.strip().split('=') for line in open('filename.txt'))
Run Code Online (Sandbox Code Playgroud)

(如果值也可以包含"="字符.split(),maxsplit=1则可以选择使用)


rub*_*bik 10

也许ConfigParser可以帮到你.

  • -1如果没有任何节头,ConfigParser将抛出NoSectionError. (10认同)

GBF*_*iel 8

以@Steven的答案为例,不考虑属性文件中的注释和换行符,这一点可以:

H = dict(line.strip().split('=') for line in open('file.properties') if not line.startswith('#') and not line.startswith('\n'))  
Run Code Online (Sandbox Code Playgroud)


use*_*379 7

d = {}
with open('filename') as f:
    for line in f:
        key, value = line.split('=')
        d[key] = value
Run Code Online (Sandbox Code Playgroud)

编辑:正如foret所建议的,您可以将其更改为

    for line in f:
        tokens = line.split('=')
        d[tokens[0]] = '='.join(tokens[1:])
Run Code Online (Sandbox Code Playgroud)

这将处理在值中允许等号的情况,但如果名称也可能具有等号,那么仍然会失败 - 因为你需要一个真正的解析器.

  • 你可以做`for line in f`. (2认同)
  • 如果值包含'='怎么办?=) (2认同)