Appliquer différentes commandes à différents endroits

Je travaille dans Ubuntu. J’ai un tas de commandes (disons 10 commandes comme cmd1, cmd2, cmd3 ………….. cmd10)

Je veux écrire un script python, qui peut réaliser ce qui suit:

Il devrait traverser la structure de répertoires et appliquer une commande à un chemin de répertoire particulier. L’emplacement et les commandes me sont déjà connus.

Voici l’exemple, comment je veux que le script fonctionne.

/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 

Quelqu’un peut-il s’il vous plaît aider à ce sujet.

Utilisez simplement os.chdir(path) .

Quelque chose comme:

 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() 

Et juste mettre chaque commande dans une fonction.

Edit: Je pensais que vous vouliez exécuter différentes commandes Python dans des répertoires différents. S’il existe différents programmes externes, utilisez:

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

Aucune raison d’utiliser Popen et d’ wait quand il s’agit spécifiquement de l’ call .

Peut-être quelque chose comme ça:

 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() 

(juste un coup rapide)

Regardez comment j’ai “abusé” de l’erreur apparente à la cmd 8 pour montrer comment appeler des programmes qui prennent des parameters.

 import os pathCommands = {r'C:\Windows':'dir', r'C:\test':'cd..' } for path, command in pathCommands.items(): os.chdir(path) os.system(command)