Python 如何使用子进程获取当前目录?

Python 如何使用子进程获取当前目录?,python,python-3.x,Python,Python 3.x,如何获取我所在的当前目录?喜欢使用 os.getcwd() 默认情况下,生成的子进程将继承PWD。但是,您可以为subprocess.Popen c'tor指定cwd参数,以设置不同的初始PWD。Unix(Linux,MacOS): 窗口: import subprocess arguments = ['cd'] directory = subprocess.check_output(arguments) 如果要在这两种类型的操作系统中运行,必须检查机器操作系统: import os im

如何获取我所在的当前目录?喜欢使用

os.getcwd()

默认情况下,生成的子进程将继承PWD。但是,您可以为subprocess.Popen c'tor指定
cwd
参数,以设置不同的初始PWD。

Unix(Linux,MacOS):

窗口:

import subprocess

arguments = ['cd']
directory = subprocess.check_output(arguments)
如果要在这两种类型的操作系统中运行,必须检查机器操作系统:

import os
import subprocess

if os.name == 'nt': # Windows
    arguments = ['cd'] 
else: # other (unix)
    arguments = ['pwd']

directory = subprocess.check_output(arguments)

首先,我假定您并不是询问存在的某个特定子流程,该子流程只是为了告诉您当前的工作目录,而不做其他事情(Apducer的回答)。如果是这样的话,您可以简单地作为
os.getcwd()
而忽略子流程。你显然已经知道了。因此,您必须处理其他(任意?)子流程

其次,我假设您通过dr1fter的回答理解,您可以控制子流程启动的工作目录。我想这对你来说还不够


相反,我怀疑您认为,根据子流程自身的内部逻辑,它可能在启动后的某个时间更改了其工作目录,您无法预测它的最终位置,您希望能够在任意时间向子流程发送某种信号,询问它目前在哪里工作。一般来说,只有当该过程已通过接收此类信号(通过任何路径)并发出此类响应的逻辑进行了专门编程时,才可能实现这一点。我想这就是Supersew评论的意思,“这不取决于子流程吗?”

我之所以说“一般”,是因为存在特定于平台的方法。例如,请参见:


这不取决于子流程吗?是的,但是如何调用子流程来告诉您它在哪个cwd中?当您可以在主流程中轻松获得它时,为什么要这样做?
import os
import subprocess

if os.name == 'nt': # Windows
    arguments = ['cd'] 
else: # other (unix)
    arguments = ['pwd']

directory = subprocess.check_output(arguments)