使用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)
答案 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