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 :(得分: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'
。