我们如何从 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.call
。 subprocess.call
实际上不会调用 shell,除非您特别要求它这样做。因此,符号 ;
没有特殊含义 。由于它与路径在同一个字符串中,因此您尝试 cd
进入 ../../../src/3rdpartytools/boost;./b"
, 而不是 执行 cd 然后执行函数。
使用 os.chdir 转到适当的目录,然后使用 subprocess.call(["./b2"])
.
调用 ./b2
我目前正在编写一个 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.call
。 subprocess.call
实际上不会调用 shell,除非您特别要求它这样做。因此,符号 ;
没有特殊含义 。由于它与路径在同一个字符串中,因此您尝试 cd
进入 ../../../src/3rdpartytools/boost;./b"
, 而不是 执行 cd 然后执行函数。
使用 os.chdir 转到适当的目录,然后使用 subprocess.call(["./b2"])
.
./b2