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()
。
我有这个命令:
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()
。