我有一个python程序,它加载一个用c ++创建并导入为dll的python模块。在python程序中,我在工作目录中创建了一个名为 cpp.conf 的文件。
with open('cpp.conf', 'w') as cppconf:
cppconf.write("blabla")
c ++模块稍后由python程序导入。在c ++方面,我试图打开文件 cpp.conf ,但它失败了。
std::string configFile = "cpp.conf";
std::ifstream ifs(configFile.c_str());
if (ifs.good()) {
std::cout << "opened file successfully." << std::endl;
}
else {
std::cout << "failed to open file." << std::endl;
}
但是,程序完成后,我可以看到文件 cpp.conf 。我想可能是c ++需要一些时间让文件在磁盘上看到,所以我尝试了以下内容:
with open('cpp.conf', 'w') as cppconf:
cppconf.write("blabla")
import time
time.sleep(5) # wait 5 seconds
它也没有帮助。
如果python程序没有触摸文件,也就是说,没有打开它来编写,c ++端可以成功打开文件。
是否有这种效果的原因?
平台是Windows 7,我没试过Linux。
解决!
答案 0 :(得分:1)
您可能正在运行具有管理权限的python程序和与另一个不允许读取它的用户的C ++程序吗?
另请注意,文件位置可能很重要。在Windows上,由于我不完全清楚的原因,系统有时只是简化进程以便能够在某个目录中创建文件(例如C:\
),而在另一个“更安全”的地方创建文件。 / p>
这可能是调试的噩梦,因为操作系统只是对程序撒谎......