Python subprocess.Popen 在其他目录

Python subprocess.Popen in other directory

我有这个命令:

grep = subprocess.Popen('head -20'.split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE)
ls = subprocess.Popen('ls'.split(), stdout=grep.stdin)
output_lines = grep.communicate()[0]

如何在其他目录中运行这个命令?例如在 /home/?

子进程将继承python进程的当前工作目录。 只需在调用 Popen 之前更改目录。例如:

import os

old_dir = os.getcwd()
os.chdir( '/home' )
grep = subprocess.Popen( ... )
os.chdir( old_dir )

chdir:

import os

os.getcwd()
>> 'a/sample/path'

os.chdir('/home/')

os.getcwd()
>> '/home/'

为了避免使用 os.chdir() 更改全局进程工作目录(如果您的程序使用多线程,则不需要),您可以将 cwd='/home' 参数传递给 Popen()