chilli6519 2023-03-27 07:49 采纳率: 0%
浏览 4

[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文件就提示错误

 

 

  • 写回答

1条回答 默认 最新

  • bilal-abdurehim 2023-03-30 10:42
    关注

    原因在于,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脚本时,也可以正常使用相对路径或没有指定完整路径的情况下,避免找不到文件这样的错误。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月27日