[Errno 2] No such file or directory: 'XXXX.txt'

[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脚本中使用了相对路径或没有指定完整路径,就会使用工作目录下的相对位置进行查找,导致找不到文件。

解决方法有两种:

  1. 在Python脚本中使用绝对路径,指定完整的文件路径,这样就不会使用工作目录进行查找了。
  2. 在Python.NET中调用Python脚本前,先设置工作目录。可以使用如下方法设置:
PythonEngine engine = Python.CreateEngine();
engine.Runtime.IO.SetDefaultWorkingDirectory("D:\\test");
engine.ExecuteFile("[test.py](http://test.py/)");

设置工作目录后,再执行Python脚本,就会使用设置的工作目录进行查找,避免找不到文件问题。

通过上述两种方法,在C#环境中使用Python.NET调用Python脚本时,也可以正常使用相对路径或没有指定完整路径的情况下,避免找不到文件这样的错误。