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

时间:2015-09-26 08:18:25

标签: python python-2.7 subprocess

我目前正在编写一个python脚本,它将自动生成我项目中各种目录中的文件。目录结构如下:

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

script1.py是我的python文件,我想要执行的所有make文件都存在于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。

1 个答案:

答案 0 :(得分:2)

您以多种方式错误地使用subprocess.callsubprocess.call实际上不会调用shell,除非您特别要求它。因此,符号;具有无特殊含义。由于它与路径位于同一个字符串中,因此您尝试cd进入../../../src/3rdpartytools/boost;./b"执行cd然后执行该功能。

使用os.chdir转到相应的目录,然后使用./b2致电subprocess.call(["./b2"])