2012-04-12 8 views
0

私はサブプロセスモジュールを使ってPythonでコマンドを実行しています。しかし、問題は、コマンドに文字列(ファイル名用)も含めたいということです。文字列フォーマットでコマンドを実行するにはどうすればよいですか?

私が何をしたいの例:

from subprocess import call 

    command = "cd/DirectoryName" 

    call = [(command)] 

この具体例では、私はDirectoryNameのは、ユーザーによって決定変数になりたいです。

Desktop=raw_input() 
    cmd="'cd %s'(Desktop/)" 
    call([cmd]) 

ここで私はPythonシェルでこれらのコマンドを実行しようとすると、私が手にエラーがあります:私は無駄にしようとしている何

Chicken='Chicken' 
    command = 'say %s' % (Chicken) 
    print command 
    say Chicken 
    call([command]) 

    Traceback (most recent call last): 
    File "/Applications/WingIDE.app/Contents/MacOS/src/debug/tserver/_sandbox.py", line 1,  in <module> 
    # Used internally for debug sandbox under external interpreter 
    File "/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/subprocess.py", line 493, in call 
    return Popen(*popenargs, **kwargs).wait() 
    File "/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/subprocess.py", line 679, in __init__ 
    errread, errwrite) 
    File "/Library/Frameworks/EPD64.framework/Versions/7.2/lib/python2.7/subprocess.py", line 1228, in _execute_child 
    raise child_exception 
    OSError: [Errno 2] No such file or directory 

ちょうどこれを試して、シェルがクラッシュしました。

Chicken="Chicken" 
    print Chicken 
    Chicken 
    call[("say %s" % (Chicken)] 

答えて

1

これは文字列補間の仕組みではありません。

cmd='cd %s' % (Desktop,) 
+0

構文のヘルプありがとうございます。私は、私が得るエラーで質問を更新しました。ファイルやディレクトリが私が実行したいコマンドにどのように影響するかはわかりません。 – ironcyclone

+0

シンプルです。 "cd​​"という名前のコマンドはありません。 "cd"コマンドがありますが、それはあなたが実行しているものではありません。 –

+0

しかし、私が掲示した例では、コンピュータは言葉を話すと言う。コールステートメントを実行したときに「チキン」と言っていたはずです。 – ironcyclone

0

まず第一に、

cmd="'cd %s'(Desktop/)" 

は、それが "printfの" %sのだろうように見えるしていません。

たぶん

cmd="'cd %s/'%(Desktop)" 

しかし、それは文字列の中だからそれが補間する場合、私はまだわかりませんが「コール」機能とPythonコマンドを使用することができます - それはコマンドでそれを呼び出すことはありませんライン?

関連する問題