在不同位置应用不同的命令

时间:2011-08-11 07:01:58

标签: android python ubuntu

我在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

有人可以帮忙解决这个问题。

3 个答案:

答案 0 :(得分: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 :(得分:1)

import os

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

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

答案 2 :(得分: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 命令。如果是不同的外部程序,请使用:

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

没有理由使用Popenwait这是call的具体内容。