Sco*_*pil 5 python tuples configuration-files
我有个问题.我的程序使用配置文件来设置选项,其中一个选项是元组.这就是我的意思:
[common]
logfile=log.txt
db_host=localhost
db_user=root
db_pass=password
folder[1]=/home/scorpil
folder[2]=/media/sda5/
folder[3]=/media/sdb5/
Run Code Online (Sandbox Code Playgroud)
etc ...我可以使用Python中的ConfigParser模块将其解析为元组吗?有一些简单的方法来做到这一点?
小智 9
如果你可以改变这样的配置格式:
folder = /home/scorpil
/media/sda5/
/media/sdb5/
Run Code Online (Sandbox Code Playgroud)
然后在python中:
config.get("common", "folder").split("\n")
Run Code Online (Sandbox Code Playgroud)
您的配置可能是:
[common]
logfile=log.txt
db_host=localhost
db_user=root
db_pass=password
folder = ("/home/scorpil", "/media/sda5/", "/media/sdb5/")
Run Code Online (Sandbox Code Playgroud)
假设您在名为 foo.cfg 的文件中有配置,您可以执行以下操作:
import ConfigParser
cp = ConfigParser.ConfigParser()
cp.read("foo.cfg")
folder = eval(cp.get("common", "folder"), {}, {})
print folder
print type(folder)
Run Code Online (Sandbox Code Playgroud)
这应该产生:
('/home/scorpil', '/media/sda5/', '/media/sdb5/')
<type 'tuple'>
-- 编辑 -- 从那以后我改变了我的想法,今天我认为在这种情况下使用 eval 是一个坏主意。即使在受限环境中,如果配置文件在用户控制之下,这也可能是一个非常糟糕的主意。今天我可能会推荐用 split 做一些有趣的事情来避免恶意代码执行。