0
def parseCommand():
    args = None
    if len (sys.argv) < 2:
        print('no command entered')
        return

    command = sys.argv[1]
    print ('command executed: %s' %command)
    if len(sys.argv) == 3:
        args = sys.argv[2]
    if len(sys.argv) > 3:
        args = sys.argv[2:]

    commandList = {
                'fA'              : fA(),
                'fB'              : fB(),
                }

    if args == None:
        return commandList[command]
    else:
        return commandList[command](args)

if __name__ == "__main__": 
    parseCommand()

Linuxからこのスクリプトを実行しています。ただし、 python scriptname.py fA または python scriptname.py fB を実行すると、スクリプトは上から下に実行され、両方の機能を実行するように見えます

if __name__ == "__main__": 
    fA()

また

if __name__ == "__main__": 
    fB()

python scriptname.py frtom linux を実行すると、呼び出している関数のみが実行されます。

誰かが私のアプローチの何が問題なのか教えてもらえますか? ありがとう

4

1 に答える 1

8

作成がcommandList間違っています。fAとの後の括弧fBは関数を呼び出しています:

commandList = {
            'fA'              : fA(),
            'fB'              : fB(),
            }                     ~~ <-- remove these parentheses
于 2013-04-10T15:52:15.020 に答える