我目前正在编写一个python脚本,它将自动生成在我的项目下的各个目录中的文件。目录结构如下:
Repository
|
|
_____ |_____
| |
Builds src
| |
__|__ __|__
Scripts xyz abc 3rdpartytools
| |
conf boost
| |
script1.py b2
script1.py是我的python文件,我要执行的所有make文件都位于3rdpartytools目录下。boost目录只是一个例子。现在,我想执行文件b2
。从外壳上看,/b2起作用。你知道吗
我试过用子流程调用从python文件。我试过了
call(["cd"," ../../../src/3rdpartytools/boost;./b2"])
但是我得到了/usr/bin/cd: line 2: cd: ../../../src/3rdpartytools/boost/b2: No such file or directory
当我从shell执行相同的命令时,效果很好。你知道吗
Python2.7和CentOS。你知道吗
您以多种方式错误地使用了
subprocess.call
。subprocess.call
实际上不会调用shell,除非您特别要求它调用。因此,符号;
没有特殊意义。因为它与路径在同一个字符串中,所以您可以尝试将cd
转换为../../../src/3rdpartytools/boost;./b"
,而不是执行cd,然后执行函数。你知道吗使用os.chdir转到相应的目录,然后使用
subprocess.call(["./b2"])
调用./b2
。你知道吗相关问题 更多 >
编程相关推荐