-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あなたのcmd口述の値はです'sh forExample.sh'

したがってcmd[a][0]、その文字列の最初の文字になります。


この線を見ると

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

tupledict に as 値を設定したいようです。値が 1 つのタプルを作成するには、 a を追加するだけ,で、コードは期待どおりに動作するはずです。

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

これで の値cmd[a]('sh forExample.sh',)になり、 でアクセスする[0]と yieldになり'sh forExample.sh'ます。

于 2012-12-04T09:54:26.687 に答える