Exec函数适用于一种方法,而不是另一种方法

时间:2016-04-21 19:43:43

标签: python

上下文:这是我在名为Looper的方法中在名为commands的类中运行的代码的一部分。我的代码的想法是,当我在Python命令行中输入内容时,如果它只是一个单词,它运行具有该名称的方法。如果它的单词更大,则取第一个单词,将其作为方法命令,其他一切都是参数。

cmd =  input("User>>> ")

cmdSplit = cmd.split()
lencmd = len(cmdSplit)

if (lencmd== 1):
    cmd = "commands." + cmd + "()"
    print(type(cmd))
    logging.debug("This is a length of 1")
    try:
        exec (cmd)
    except:
        print ("Not a valid command.")

当我输入 chrome (我在下面发布的方法之一)进入此行时,exec会中断,并且无法正常工作。但是,如果我使用 hearth (另一种方法,它可以正常工作)。我看不出镀铬的任何原因不起作用,但工作的炉子。 exec可能只是不喜欢Chrome这个词吗?

def chrome():
    subprocess.Popen("chrome.bat", cwd=r"C:\cmdcommands")

def hearth():
    subprocess.Popen("hearth.bat", cwd=r"C:\cmdcommands")

我的程序输出:

User>>> chrome
<class 'str'>
DEBUG:root:This is a length of 1
Not a valid command
User>>> hearth
<class 'str'>
DEBUG:root:This is a length of 1
User>>>    

1 个答案:

答案 0 :(得分:0)

您使用了悬挂的try:except:语句,如评论中所述。

相反,可以使用特定exceptions更准确地查明Python程序中问题的原因,例如ValueErrorTypeError