2012-12-04 305 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