背景:
课程设计需要涉及到后端调用若干个编译好的 .exe 可执行文件。直接在 test.py 中调用 hello.exe 经测试没有问题,但是在 django views.py 中调用 hello.exe 失败:
'hello.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。
相关环境:
python 3.5 , django 2.1 , IDE: PyCharm 。
相关代码:
test.py
import os
def ccpp():
main="hello.exe"
f = os.popen(main)
data = f.readlines()
f.close()
return data
if __name__=='__main__':
print(ccpp())
hello.cpp
#include<iostream>
void test()
{
std::cout<<"hello"<<std::endl;
}
int main()
{
test();
return 0;
}
views.py
def test(ruquest):
...
main="hello.exe"
f = os.popen(main)
data = f.readlines()
f.close()
...
test.py views.py hello.cpp hello.exe 均在同级目录下。
在 test.py 中直接调用结果如下
views.py 拿到前端请求调用 test() 方法后调用的结果如下
路径问题.
os.popen
使用的是当前路径. Python 程序的当前路径一般是指最开始执行的 Python 文件的路径, 可以用os.getcwd()
看到.比如 Django 的官方例子结构:
如果通过
python manage.py runserver
运行, 那么当前目录就是mysite/
, 这时要将hello.exe
放置到和manage.py
同一个目录.或者如果执意要放在和
views.py
同一目录, 可以这样:参考:stackoverflow: find-current-directory-and-files-directory