-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.

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

4

2 回答 2

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
于 2012-12-04T09:54:10.583 回答
0

Foo你的cmddict的值是'sh forExample.sh'.

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


看着这条线

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

似乎你想tuple在你的字典中有一个 as 值。要创建一个单值元组,只需附加 a,并且您的代码应该可以按预期工作:

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

现在 is 的值cmd[a]('sh forExample.sh',)访问它[0]会产生'sh forExample.sh'

于 2012-12-04T09:54:26.687 回答