我在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 :(得分: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)
没有理由使用Popen
和wait
这是call
的具体内容。