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.
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.
#!/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)
9条答案
按热度按时间yx2lnoni1#
os.system
是C标准库函数system()
的 Package 器。它的参数可以是任何有效的shell命令,只要它适合为进程的环境和参数列表保留的内存。因此,用分号或换行符分隔每个命令,它们将在同一环境中一个接一个地执行。
bpsygsoo2#
试试这个
lnlaulya3#
每个进程都有自己的当前工作目录,通常子进程不能改变父进程的目录,这就是为什么
cd
是一个内置的shell命令:它在相同的( shell )进程中运行。每个
os.system()
调用都会创建一个新的shell进程,在这些进程中更改目录不会影响父进程,因此也不会影响后续的shell进程。要在同一个shell示例中运行多个命令,可以使用
subprocess
模块:如果您知道目标目录;use
cwd
parameter suggested by @Puffin GDI instead .bvn4nwqk4#
这很简单,真的,对于Windows,用
&
分隔命令,对于Linux,用;
分隔命令。str.replace
是解决该问题的一种非常好的方法,在下面的示例中使用:gv8xihay5#
当你调用 os.system() 时,每次你创建一个subshell --当 os.system 返回时它会立即关闭(subprocess 是推荐调用OS命令的库)。如果你需要调用一组命令--在一次调用中调用它们。顺便说一句,你可以从Python中更改工作目录-- os.chdir
hjqgdpho6#
尝试使用子进程. popen和
cwd
示例:
wfveoks07#
就用
os.system("first command\nsecond command\nthird command")
我想你已经知道该怎么做了
wyyhbhjk8#
os.system("ls -l && <some command>")
nnsrf1az9#
您可以使用
os.chdir()
更改回需要所在的目录