我们如何从 python 执行“./<script_name>”?

How do we execute "./<script_name>" from python?

我目前正在编写一个 python 脚本,该脚本将自动生成项目下各个目录中的 make 文件。目录结构是这样的:

                Repository
                  |
                  |
            _____ |_____
           |            |
         Builds        src
           |            |
         __|__        __|__
   Scripts   xyz     abc   3rdpartytools
    |                          |
    conf                     boost
    |                          |
script1.py                     b2

script1.py 是我的 python 文件,我要执行的所有生成文件都位于 3rdpartytools 目录下。 boost目录只是一个例子。现在,我要执行文件 b2。来自 shell,./b2 作品。

我尝试使用 python 文件中的 subprocess.call。我试过了

call(["cd"," ../../../src/3rdpartytools/boost;./b2"]) 但我得到 /usr/bin/cd: line 2: cd: ../../../src/3rdpartytools/boost/b2: No such file or directory

当我从 shell 执行相同的命令时,工作正常。

Python 2.7 和 CentOS。

您在多个方面错误地使用了 subprocess.callsubprocess.call 实际上不会调用 shell,除非您特别要求它这样做。因此,符号 ; 没有特殊含义 。由于它与路径在同一个字符串中,因此您尝试 cd 进入 ../../../src/3rdpartytools/boost;./b" 而不是 执行 cd 然后执行函数。

使用 os.chdir 转到适当的目录,然后使用 subprocess.call(["./b2"]).

调用 ./b2