2012-12-04 42 views
-2
Environment: python 2.6 
path="/this/is/an/example/" 

cmd={'Foo': (PATH + 'sh forExample.sh'), 'blah': (PATH + 'sh secExample.sh')} 

for app in cmd.keys(): 
    print 'app name', app 

其打印效果与预期Foo蟒蛇键()错误

然而,当我尝试访问 'SH forExample.sh'

for app in cmd.keys(): 
     print 'app name', app 
     run_apps([app]) 

其中run_apps功能看起来像这样..

def run_apps(apps): 
     for a in apps: 
       print a 
       cmdlist = cmd[a][0] 
       print cmdlist 

它没有给出预期的输出,而是给出了's'。我试着改变cmd [a] [x]中的值,它一直给出X指向的字符的值。

哦,这是错误:/bin/sh: 1: /: Permission denied 我使用Linux, distro: Ubuntu.

任何想法的错误是什么?我在哪里?

回答

0

cmd字典的Foo值是'sh forExample.sh'

因此cmd[a][0]将导致该字符串的第一个字符。


望着这条线

cmd={'Foo': ('sh forExample.sh'), 'blah': ('sh secExample.sh')} 

看来你想有一个tuple在你的字典值。要创建一个单值元组,只是追加一个,,并按照预期的代码应工作:

cmd={'Foo': ('sh forExample.sh',), 'blah': ('sh secExample.sh',)} 

现在的cmd[a]('sh forExample.sh',),并与[0] accesing它会产生'sh forExample.sh'

+0

谢谢!它现在有效。 – user1860977

0

看来你是在发送密钥而不是价值。试试这个:

for app in cmd.keys(): 
    print 'app name', app 
    run_apps(app,cmd[app]) 

然后run_apps得到:

def run_apps(a,app): 
    print a 
    print app