Python调用多个命令

时间:2013-11-18 07:19:49

标签: python command subprocess

我想从我的python脚本调用多个命令。 我尝试使用os.system(),但是,当我更改当前目录时,我遇到了问题。

示例:

os.system("ls -l")
os.system("<some command>") # This will change the present working directory 
os.system("launchMyApp") # Some application invocation I need to do.

现在,第三次启动调用无效。

9 个答案:

答案 0 :(得分:3)

您将这些行与&amp;

分开
os.system("ls -l & <some command> & launchMyApp")

答案 1 :(得分:1)

当你调用 os.system()时,每次创建一个子shell--当 os.system 返回时立即关闭( subprocess 是推荐的用于调用OS命令的库)。如果需要调用一组命令 - 在一次调用中调用它们。 顺便说一句,你可以从Python改变工作总监 - os.chdir

答案 2 :(得分:1)

尝试使用subprocess.Popencwd

示例:

subprocess.Popen('launchMyApp', cwd=r'/working_directory/')

答案 3 :(得分:1)

每个进程都有自己的当前工作目录。通常,子进程不能更改父目录,这就是cd是内置shell命令的原因:它在同一个(shell)进程中运行。

每个os.system()调用都会创建一个新的shell进程。更改这些进程中的目录对父python进程没有影响,因此对后续的shell进程没有影响。

要在同一个shell实例中运行多个命令,可以使用subprocess module:

#!/usr/bin/env python
from subprocess import check_call

check_call(r"""set -e
ls -l
<some command> # This will change the present working directory 
launchMyApp""", shell=True)

如果你知道目的地目录; use cwd parameter suggested by @Puffin GDI instead

答案 4 :(得分:0)

您可以使用os.chdir()

更改回您需要的目录

答案 5 :(得分:0)

这很简单,真的。 对于Windows,将命令与&amp ;,分开,对于Linux,将它们分开; 您可能希望使用string.replace,如果是,请使用以下代码:

import string, os

不仅仅是:

os.system(‘’’
cd /
mkdir somedir’’’.replace(‘\n’, ‘; ‘) # or use & for Windows

答案 6 :(得分:0)

尝试一下

import os

os.system("ls -l")
os.chdir('path') # This will change the present working directory
os.system("launchMyApp") # Some application invocation I need to do.

答案 7 :(得分:0)

os.system(“ ls -l &&”)

答案 8 :(得分:-1)

只需使用

os.system("first command\nsecond command\nthird command")

我认为你已经知道该怎么做