Python subprocess.Popen在其他目录中

时间:2016-05-05 11:27:15

标签: python subprocess popen

我有这个命令:

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 /?

3 个答案:

答案 0 :(得分:1)

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

import os

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

使用chdir

import os

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

os.chdir('/home/')

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