需要彼此的子进程命令,特别麻烦 "cd"

Subprocess commands that need each other, special trouble with "cd"

我想要一个程序,在给定参数的情况下,我正在使用 optpatse,更改工作目录并执行一些文件。

我试过:

subprocess.check_call(['ls'], cwd="/home")

这行得通。但如果我这样做:

subprocess.call("cd", shell=True)
subprocess.call("ls", shell=True)

这不起作用,"ls" 告诉我当前 python 文件在哪里工作。我知道这两个命令都能正确执行,但我需要在第一个命令的目录中执行第二个命令。

def followpath(path):

    subprocess.call("cd", shell=True)
    subprocess.call("ls", shell=True)

#The real thing I want to execute is:

    subprocess.call("cd", shell=True)
    subprocess.call(["cd", path])
    subprocess.call(["python3", somepyfile])

我还希望,在 运行 终端中的脚本之后,工作目录更改为路径并执行 somepyfile。

subprocess.call() 创建一个子进程,因此您的 cd 将更改 child 进程的 CWD(然后立即退出)。您希望 os.chdir(path) 更改程序的 CWD。