VC++ / python 如何获取工程当前路径及对应的其相关路径
2014-04-14 20:35
197 查看
最近在一个项目中用到java调用c++编写的exe,exe中需要调用外部文件,我把文件与exe放一起了,所以采用的相对路径很方便,但打成exe后,如果在cmd命令行中运行时,发现只有cd 当exe所在的目录才能调用到所需要的文件,我又不想写绝对路径,所以网上各种找如果获取路径的方法,一师兄告诉我了如何获取exe的路径,就是用函数
GetModuleFileName(),这个函数的功能:
GetModuleFileName(),这个函数的功能:
获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。
如果想要获取另一个已加载模块的文件路径,可以使用GetModuleFileNameEx函数
完整函数:string GetExePath(void)
{
char szFilePath[MAX_PATH + 1]={0};
GetModuleFileNameA(NULL, szFilePath, MAX_PATH);
(strrchr(szFilePath, '\\')+1)[0] = 0; // 删除文件名,只获得路径字串
string path = szFilePath;
return path;
}
这个获取的是exe所在的目录,一般为debug里或者release里 。
结果如下:
C:\Users\MINUS>D:\ALL--CODE\get_absolute_path.exe
获取当前工作路径
C:\Users\MINUS
得到当前模块的路径
D:\ALL--CODE\get_absolute_path.exe
C:\Users\MINUS
C:\Users\MINUS\..\
C:\Users
这个函数就是直接获取当前工程的目录:
GetCurrentDirectory(1000,buf); //得到当前工作路径
如果你想在得到的目录下进入或者退出一级目录,怎么办呢?可能你会硬拼凑,不过这里有现成的函数:
string a;
a.assign(buf);
cout<<a<<endl;
a.append("\\..\\"); //设置为当前工作路径为当时的上一级
cout<<a<<endl;
//a=a+"..\\";
SetCurrentDirectory(a.c_str()); //设置
注意两个函数的第一个字母:Get和 Set,你应该会区别了
还有如果你想进入到某一你想去的目录下也是用:
SetCurrentDirectory("E:\\KanKan");
GetCurrentDirectory(1000,buf);
//这样你就可以直接进入到e:\\KanKan目录下
这样的话你在cmd运行exe的时候就可以获取exe所在的目录 了,不受你当前目录影响了。
python获取当前路径就很简单了:
import os,sys
print os.path[0]
相关文章推荐
- C语言技巧:怎样把数组作为参数传递给函数?
- PAT 1074. Reversing Linked List
- C++中抽象类和接口类的区别
- c++
- 屏幕坐标、设备坐标以及逻辑坐标的区别
- C++归并算法
- UVa 657 The die is cast(DFS*2)
- C++拷贝构造函数详解
- c++ scanf sscanf ssprintf gets 逗号输入 不确定行列长度 旧事重提
- C++初学者
- 初试C++犯的超级低级错误
- VC++实现路由跟踪
- C++ ## 宏定义中字符串连接操作
- Visual C++/MFC入门教程
- C++primer plus第六版课后编程题答案10.7
- C++primer plus第六版课后编程题答案10.7
- 最少拦截系统
- C++primer plus第六版课后编程题答案10.6
- C++primer plus第六版课后编程题答案10.6
- 错误 1 error C2143: 语法错误 : 缺少“;”(在“using”的前面)