我想从我的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.
现在,第三次启动调用无效。
答案 0 :(得分:3)
您将这些行与&amp;
分开os.system("ls -l & <some command> & launchMyApp")
答案 1 :(得分:1)
当你调用 os.system()时,每次创建一个子shell--当 os.system 返回时立即关闭( subprocess 是推荐的用于调用OS命令的库)。如果需要调用一组命令 - 在一次调用中调用它们。 顺便说一句,你可以从Python改变工作总监 - os.chdir
答案 2 :(得分:1)
答案 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")
我认为你已经知道该怎么做