python key()错误

时间:2012-12-04 09:38:06

标签: python linux

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.

知道错误是什么吗?我要去哪里?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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


看这一行

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

您的dict似乎想要tuple作为值。要创建一个单值元组,只需附加一个,,您的代码应该按预期工作:

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

现在cmd[a]的值为('sh forExample.sh',),使用[0]进行访问会产生'sh forExample.sh'