我有这个命令:
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 /?
中答案 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/'