ConfigParser读取文件,怎样把值[string]类型转为list,

Define_ling 2014-07-01 02:41:24
#代码读取文件
servers = [];
config = ConfigParser.ConfigParser()
config.readfp(open('services.ini'))
servers = config.get("server",'testServers')
print(servers)
print('******')
for i in servers:
print(i)
# print 'login sucess:%s' % (i[0])
# print 'cwd %s' %(i[4])


输出结果:
[
['10.30.152.23','21','**','**','/jboss/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.176.197','21','**','**','/home/jboss/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.184.238','21','**','**','/opt/bea/jboss/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.164.30','21','**','**','/home/jboss/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.154.92','21','**','**','/home/JBOSS/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.194.9','21','**','**','/opt/jboss/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.158.14','21','**','**','/home/jboss/jboss-4.0.5_TEST/server/default/deploy/']
]
******
[


[
'
1
0
.
3
0
.
********

为什么不是把servers当list来处理,我想通过i[4]正确获得/jboss/jboss-4.0.5_TEST/server/default/deploy/

...全文
803 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
The_Third_Wave 2014-07-01
  • 打赏
  • 举报
回复
引用 12 楼 xmnathan 的回复:
[quote=引用 11 楼 u013171165 的回复:] [quote=引用 10 楼 xmnathan 的回复:] 文本方式读取的配置 肯定都是字符串 需要根据使用需求 对应 int(str) #int eval(str) #list dict tuple
求demo文档,我一直把eval当计算器用!这个确实没用过,试了下有空格,报错,就去写函数了。。。[/quote] 这个哪要什么文档 自己敲敲代码试试就可以了

>>> strDict = '''{'key1':'value1','key2':3}'''
>>> Dict = eval(strDict)
>>> Dict['key1']
'value1'
>>> Dict['key2']
3
[/quote] 我查了demo,里面没说有这种用法,所以问下你在哪看到过。
  • 打赏
  • 举报
回复
引用 11 楼 u013171165 的回复:
[quote=引用 10 楼 xmnathan 的回复:] 文本方式读取的配置 肯定都是字符串 需要根据使用需求 对应 int(str) #int eval(str) #list dict tuple
求demo文档,我一直把eval当计算器用!这个确实没用过,试了下有空格,报错,就去写函数了。。。[/quote] 这个哪要什么文档 自己敲敲代码试试就可以了

>>> strDict = '''{'key1':'value1','key2':3}'''
>>> Dict = eval(strDict)
>>> Dict['key1']
'value1'
>>> Dict['key2']
3
The_Third_Wave 2014-07-01
  • 打赏
  • 举报
回复
引用 10 楼 xmnathan 的回复:
文本方式读取的配置 肯定都是字符串 需要根据使用需求 对应 int(str) #int eval(str) #list dict tuple
求demo文档,我一直把eval当计算器用!这个确实没用过,试了下有空格,报错,就去写函数了。。。
  • 打赏
  • 举报
回复
文本方式读取的配置 肯定都是字符串 需要根据使用需求 对应 int(str) #int eval(str) #list dict tuple
The_Third_Wave 2014-07-01
  • 打赏
  • 举报
回复
引用 8 楼 define_ling 的回复:
引用 6 楼 xmnathan 的回复:
serversList = eval(servers)
我复制过去有空格。。。eval没成功,还自己写了个函数,我去!
Define_ling 2014-07-01
  • 打赏
  • 举报
回复
引用 6 楼 xmnathan 的回复:
serversList = eval(servers)
Define_ling 2014-07-01
  • 打赏
  • 举报
回复
引用 5 楼 define_ling 的回复:
谢谢
  • 打赏
  • 举报
回复 1
serversList = eval(servers)
Define_ling 2014-07-01
  • 打赏
  • 举报
回复
The_Third_Wave 2014-07-01
  • 打赏
  • 举报
回复
引用 3 楼 define_ling 的回复:
[quote=引用 2 楼 u013171165 的回复:]
#    print 'login sucess:%s' % (i[0])
#    print 'cwd %s' %(i[4])
这两句有事python2.7的语法了,还请楼主说清楚需求啊!
在程序里面直接给servers赋值, for i in servers: print(i[4]) 能够直接打出"'/jboss/jboss-4.0.5_TEST/server/default/deploy/'" 但是我从文件里面读取出来 servers= config.get("server",'testServers') for i in servers: print(i[4]) 这样是报错的,从文本里面读取出来的时候servers好像不是当作list处理的,[/quote] 你先
type(servers)
看下具体类型,我看你输出结果就是list嵌套啊,或者你发张图加代码,大家一起看看。
Define_ling 2014-07-01
  • 打赏
  • 举报
回复
引用 2 楼 u013171165 的回复:
#    print 'login sucess:%s' % (i[0])
#    print 'cwd %s' %(i[4])
这两句有事python2.7的语法了,还请楼主说清楚需求啊!
在程序里面直接给servers赋值, for i in servers: print(i[4]) 能够直接打出"'/jboss/jboss-4.0.5_TEST/server/default/deploy/'" 但是我从文件里面读取出来 servers= config.get("server",'testServers') for i in servers: print(i[4]) 这样是报错的,从文本里面读取出来的时候servers好像不是当作list处理的,
The_Third_Wave 2014-07-01
  • 打赏
  • 举报
回复
#    print 'login sucess:%s' % (i[0])
#    print 'cwd %s' %(i[4])
这两句有事python2.7的语法了,还请楼主说清楚需求啊!
The_Third_Wave 2014-07-01
  • 打赏
  • 举报
回复
>>> servers = [
['10.30.152.23','21','**','**','/jboss/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.176.197','21','**','**','/home/jboss/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.184.238','21','**','**','/opt/bea/jboss/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.164.30','21','**','**','/home/jboss/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.154.92','21','**','**','/home/JBOSS/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.194.9','21','**','**','/opt/jboss/jboss-4.0.5_TEST/server/default/deploy/']
,['10.30.158.14','21','**','**','/home/jboss/jboss-4.0.5_TEST/server/default/deploy/']
]>>> for i in servers:
        print(i[4])

        
/jboss/jboss-4.0.5_TEST/server/default/deploy/
/home/jboss/jboss-4.0.5_TEST/server/default/deploy/
/opt/bea/jboss/jboss-4.0.5_TEST/server/default/deploy/
/home/jboss/jboss-4.0.5_TEST/server/default/deploy/
/home/JBOSS/jboss-4.0.5_TEST/server/default/deploy/
/opt/jboss/jboss-4.0.5_TEST/server/default/deploy/
/home/jboss/jboss-4.0.5_TEST/server/default/deploy/
>>> 
不是很懂楼主的问题,本身就是list嵌套结构,list里面包含list。如果直接打印需求的 那就是:
>>> servers[0][4]
'/jboss/jboss-4.0.5_TEST/server/default/deploy/'
>>> 

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧