使用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)
你可以使用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)
@SunBear尝试添加shell=True
。它不适合您,因为subprocess找不到test-cmd cd。
要了解更多关于shell=True
的信息,你可以去Actual meaning of 'shell=True' in subprocess