2011-08-11 11 views
2

私はUbuntuで作業しています。 私はたくさんのコマンドを持っています(たとえばcmd1、cmd2、cmd3 .............. cmd10のような10個のコマンド)異なる場所で異なるコマンドを適用する

次のようなPythonスクリプトを書いてみたいです:

ディレクトリ構造を通過し、特定のディレクトリパスにコマンド を適用する必要があります。 場所とコマンドはすでにわかっています。

ここでは、スクリプトをどのように動作させるかの例を示します。

/local/mnt/myspace/sample1$ cmd1 
/local/mnt/myspace/sample2$ cmd2 
/local/mnt/myspace$ cmd3 
/local/mnt$cmd4 
/local/mnt/myspace/sample9$ cmd 8 
/local/mnt/myspace/sample3$ cmd10 

誰か助けてください。

+0

なぜPythonですか?これはBashのようなシェルに適しています。アンドロイドをタグ付けした理由 –

答えて

0

os.chdir(path)を使用してください。

ような何か:

import os 
from itertools import izip 
paths = ('/local/mnt/myspace/sample1', '../sample2', 
     '../', '../', 'myspace/sample9/', '../sample3'] 
commands = (func1, func2, func3, func4, func5, func6) 
for path, command in izip(paths, commands): 
     os.chdir(path) 
     command() 

そして、ちょうど機能で各コマンドを置きます。

編集:私はそれが異なっていると思ったPython異なるディレクトリで実行したいコマンド。それは別の外部プログラムだ場合は、次のコマンドを使用します。これはcallが何のためにあるのか、具体的であるときPopenwaitを使用する

commands = (['cmd1', 'arg1'], ['cmd2', 'arg2'], ...) 
for path, command in izip(paths, commands): 
     os.chdir(path) 
     subprocess.call(command) 

ない理由はありません。

3

たぶん、このような何か:

import subprocess 
import os 
jobs=[ 
    ('/local/mnt/myspace/sample1', 'cmd1'), 
    ('/local/mnt/myspace/sample2', 'cmd2'), 
    ('/local/mnt/myspace', 'cmd3'), 
    ('/local/mnt', 'cmd4'), 
    ('/local/mnt/myspace/sample9', 'cmd', '8'), 
    ('/local/mnt/myspace/sample3', 'cmd10'), 
] 

for job in jobs: 
    print "In", job[0], "executing", job[1:] 
    os.chdir(job[0]) 
    subprocess.Popen(job[1:]).wait() 

(単に速いショット)私はパラメータを取るプログラムを呼び出す方法を示すために、cmdを8で見かけ間違いを「濫用し」ているか

ルック。

+1

'subprocess.Popen'と' wait'の代わりに 'subprocess.call'を使うことができます。同じ「虐待」を使用することもできます:)。 – agf

1
import os 

pathCommands = {r'C:\Windows':'dir', r'C:\test':'cd..' } 

for path, command in pathCommands.items(): 
    os.chdir(path) 
    os.system(command) 
+0

'os.system'は、シェルの機能(bash、COMMAND.COM、何でも)を使う必要があるときです。外部プログラムを起動するだけでいいときはありません。それが終わるまでブロックしたいときは、私の答えで行ったように 'subprocess.call'を使います。 – agf

関連する問題