上下文:這是我的代碼的一部分,它運行在一個名爲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>>>
如果拿走'try'和'except',會發生什麼? IDLE說什麼發生了? – StardustGogeta
你有什麼異常?打印出來。 –
掛'嘗試/除了'塊通常是各種問題的原因。如果你想使用'try/except',最好是捕獲一種特殊的異常而不是一攬子捕獲所有這些異常,因爲它們掩蓋的問題與你所描述的完全相同。 – mprat