2016-04-21 54 views
0

上下文:這是我的代碼的一部分,它運行在一個名爲commands的類中,名爲Looper。我的代碼的想法是,當我向Python命令行輸入內容時,如果它只是一個單詞,它將運行帶有該名稱的方法。如果它的更大的1個單詞,採取第一個詞,做方法命令,其他一切都是參數。Exec函數適用於一種方法,而不是其他方法

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.") 

它的出現,當我輸入(我的方法貼在下面一個)進入這一行,exec休息,並不會工作。但如果我使用壁爐(另一種方法,它工作正常)。我不能看到任何鉻不工作的原因,但工作的爐膛。 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>>>  
+0

如果拿走'try'和'except',會發生什麼? IDLE說什麼發生了? – StardustGogeta

+0

你有什麼異常?打印出來。 –

+1

掛'嘗試/除了'塊通常是各種問題的原因。如果你想使用'try/except',最好是捕獲一種特殊的異常而不是一攬子捕獲所有這些異常,因爲它們掩蓋的問題與你所描述的完全相同。 – mprat

回答

0

您使用的吊try:except:語句,在註釋中提到。

而是,可以使用特定的exceptions來更精確地查明Python程序中的問題的原因,例如ValueErrorTypeError

+0

明白了。這是有道理的。謝謝! – zhilothebest

相關問題