从linux运行python脚本中的函数运行整个脚本

时间:2013-04-10 15:48:46

标签: python linux

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它只执行我正在调用的函数。

有谁能告诉我我的做法有什么问题? 感谢

1 个答案:

答案 0 :(得分:8)

您正在创建commandList错误; fAfB之后的括号正在调用函数:

commandList = {
            'fA'              : fA(),
            'fB'              : fB(),
            }                     ~~ <-- remove these parentheses