2016-04-21 13 views
0

コンテキスト:これは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>>>  
+0

'try'と' except'を取り除くとどうなりますか? IDLEは何が起きていると言いますか? – StardustGogeta

+0

何の例外がありますか?それを印刷してください。 –

+1

'try/except'ブロックをハンギングすると、しばしばあらゆる種類の問題が発生します。 'try/except'を使いたい場合は、あなたが記述している問題とまったく同じ問題を隠すので、それらをすべて覆い隠すのではなく、特定の種類の例外をキャッチする方が良いでしょう。 – mprat

答えて

0

コメントで述べたようにあなたは、ぶら下がっtry:except:文を使用していました。

具体的にはexceptionsを使用して、ValueErrorTypeErrorのようなPythonプログラムの問題の原因をより正確に特定することができます。

+0

入手しました。意味あり。ありがとうございました! – zhilothebest

関連する問題