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 回答