コンテキスト:これはLooper
というメソッド内でコマンドと呼ばれるクラス内で実行されるコードの一部です。私のコードの考え方は、Pythonのコマンドラインに何かを入力すると、その単語が1つだけの場合、その名前のメソッドが実行されます。その1語より大きい場合、takeは最初の単語を取り、それをメソッドコマンドにし、それ以外はすべて引数にします。私はこの行、exec
休憩、と文句を言わない仕事にクロム(下記掲載の私の方法のいずれか)を入力するとExecメソッドが1つのメソッドで動作していて、他のメソッドでは動作していません
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
は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'ブロックをハンギングすると、しばしばあらゆる種類の問題が発生します。 'try/except'を使いたい場合は、あなたが記述している問題とまったく同じ問題を隠すので、それらをすべて覆い隠すのではなく、特定の種類の例外をキャッチする方が良いでしょう。 – mprat