如何使用python subprocess.run()转到/访问主目录

时间:2019-03-28 12:19:57

标签: python subprocess

使用python3 subprocess.run()时,我需要获取/访问我的主目录。我尝试了以下命令,但是它们的语法不正确。请给我建议我应该使用的正确语法。谢谢。

测试脚本:

import subprocess as sp
sp.run(['cd', '$HOME'], stdout=sp.PIPE, stderr=sp.PIPE)
sp.run(['cd', '${HOME}'], stdout=sp.PIPE, stderr=sp.PIPE)
sp.run(['cd', '~'], stdout=sp.PIPE, stderr=sp.PIPE)

2 个答案:

答案 0 :(得分:0)

您可以使用os.environ

home = os.environ['HOME']
import subprocess as sp
sp.run(['bash', 'cd', home], stdout=sp.PIPE, stderr=sp.PIPE)

这不会更改您的python解释器工作目录,为此您可能要使用:

home = os.environ['HOME']
os.chdir(home)

如果您需要访问子目录,则可以使用os.path.join获取路径:

home = os.environ['HOME']
subdir = 'Documents'  # or get the list of subdirs with os.listdir(home)
subdir_path = os.path.join(home, subdir)

答案 1 :(得分:0)

@SunBear尝试添加shell=True。它对您较早不起作用,因为子进程找不到test-cmd cd。

要了解有关shell=True的更多信息,可以在这里Actual meaning of 'shell=True' in subprocess