免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: hsb857
打印 上一主题 下一主题

请问:Python能不能动态建立变量? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-10-16 02:58 |只看该作者
十分对不住,不是eval
是exec

论坛徽章:
0
12 [报告]
发表于 2006-10-16 12:17 |只看该作者
不用那么客气,当初你说这个函数的时候我已经反应到exec了,只是你说这句话之前我也用exec实验过,好像结果报错为变量没有定义

配置文件的变量标示行是这么写的,例:

GAME_VERSION=1.0

还需要注意什么?

论坛徽章:
0
13 [报告]
发表于 2006-10-16 13:46 |只看该作者
import ConfigParser

class varDB:
    pass

myconfig = ConfigParser.ConfigParser()
myconfig.read('mailset.ini')

newvarDB = varDB()
for section in myconfig.sections():
    for option in myconfig.options(section):
        newvarDB.__dict__[section+'_'+option] = myconfig.get(section, option)

for key in newvarDB.__dict__.keys():
    print key, newvarDB.__dict__[key]


现在你要的变量都在newvarDB里面了
以下是测试文件内容:
[MailInfo]
path = G:\mail
delete = no

[UserInfo]
smtpauth = xxandxx@163.com
pop3user = xxandxx
smtpuser = xxandxx


[ServerInfo]
smtpserver = smtp.163.com
pop3server = pop3.163.com
小名 = 中国
大名 = 提阿姆

测试结果:
UserInfo_smtpuser          xxandxx
ServerInfo_pop3server    pop3.163.com
MailInfo_delete                no
UserInfo_pop3user          xxandxx
ServerInfo_smtpserver    smtp.163.com
ServerInfo_大名           提阿姆
ServerInfo_小名           中国
UserInfo_smtpauth          xxandxx@163.com
MailInfo_path                   G:\mail

以上的变量要用的话如下:
newvarDB.MailInfo_path
newvarDB.ServerInfo_小名
.etc

论坛徽章:
0
14 [报告]
发表于 2006-10-16 19:38 |只看该作者
我经常是用exec来交换数据的,比如一方生成文件内容是
g1="aaaa"
g2="bbbb"
c={}
c[1]=9
c[10]=15
这样的文件另一方直接exec就可以了。
或者用marshal模块编译一下

论坛徽章:
0
15 [报告]
发表于 2006-12-29 16:44 |只看该作者

使用exec

使用exec ok
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP