[Errno 2] No such file or directory: 'XXXX.txt'
在C# 环境通过pythonnet调用py文件
独立的py文件可以正确执行
但在pythonnet中执行,提示 [Errno 2] No such file or directory: 'XXXX.txt'
py执行时确实需要读取 这个文件,但在python环境下执行py文件能找到这个文件(实际在py文件同一个目录下),通过pythonnet执行py文件就提示错误
[Errno 2] No such file or directory: 'XXXX.txt'
在C# 环境通过pythonnet调用py文件
独立的py文件可以正确执行
但在pythonnet中执行,提示 [Errno 2] No such file or directory: 'XXXX.txt'
py执行时确实需要读取 这个文件,但在python环境下执行py文件能找到这个文件(实际在py文件同一个目录下),通过pythonnet执行py文件就提示错误
原因在于,Python.NET在执行Python脚本时,使用的是当前项目的工作目录。如果Python脚本中使用了相对路径或没有指定完整路径,就会使用工作目录下的相对位置进行查找,导致找不到文件。
解决方法有两种:
PythonEngine engine = Python.CreateEngine();
engine.Runtime.IO.SetDefaultWorkingDirectory("D:\\test");
engine.ExecuteFile("[test.py](http://test.py/)");
设置工作目录后,再执行Python脚本,就会使用设置的工作目录进行查找,避免找不到文件问题。
通过上述两种方法,在C#环境中使用Python.NET调用Python脚本时,也可以正常使用相对路径或没有指定完整路径的情况下,避免找不到文件这样的错误。