环境:Windows 8.1,已经安装Python2.7(C:\Python27),配置了环境变量. 已经安装VS2013,VS2017

下载地址http://ironpython.net/download/ 我下载的是IronPython-2.7.4.3261515540.msi

安装目录为:F:\Program Files (x86)\IronPython 2.7

打开vs2013,新建控制台程序CSharpCallPython

在CSharpCallPython中添加引用,F:\Program Files (x86)\IronPython 2.7\Platforms\Net40下的IronPython.dll和Microsoft.Scripting.dll

  1. def add(num1,num2):
  2. return num1+num2;

 

  1. ScriptRuntime pyRuntime = Python.CreateRuntime(); //创建一下运行环境
  2.  
  3. dynamic obj = pyRuntime.UseFile("Python1.py"); //调用一个Python文件
  4.  
  5. int a = 1, b = 2;
  6. int sum = obj.add(a,b); //调用Python文件中的求和函数
  7. Console.Write("Sum:");
  8. Console.WriteLine(sum);

 

运行结果Sum=3

调用到此结束,谢谢大家. 如果这样也许,那么这是不可能的.请看下文

如何使用os下面的库呢,咱们继续 继续添加py脚本文件python2.py

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import os
  4. import shutil
  5. def ClearDirect(path):#
  6.  
  7. for root, dirs, files in os.walk(path,topdown=False):
  8. print 'root',root
  9. for dir in dirs:
  10. print 'delete:',os.path.join(root, dir)
  11. #os.removedirs(os.path.join(root, dir))
  12. shutil.rmtree(os.path.join(root, dir))
  13. return 'OK'

 

脚本用处是删除传入的目录的子目录 添加C#代码

  1.      ScriptRuntime pyRuntime2 = Python.CreateRuntime(); //创建一下运行环境
  2. dynamic obj2 = pyRuntime.UseFile("Python2.py"); //调用一个Python文件
  3. obj2.ClearDirect(@"D:\Data\KkImage\2017"); //
  4. Console.Write("result ");
  5. Console.WriteLine(sum);

 

运行后,十分抱歉,报错了

  1. IronPython.Runtime.Exceptions.ImportException”类型的未经处理的异常在 Microsoft.Dynamic.dll 中发生
  2. 其他信息: No module named os

 

找不到OS这个模块

在python2.py中加入

  1. import sys
  2. sys.path.append("F:\Program Files (x86)\IronPython 2.7\lib")

 

代码变成

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import sys
  4. sys.path.append("F:\Program Files (x86)\IronPython 2.7\lib")
  5. import os
  6. import shutil
  7. def ClearDirect(path):#直接删除
  8.  
  9. for root, dirs, files in os.walk(path,topdown=False):
  10. print 'root',root
  11. for dir in dirs:
  12. print 'delete:',os.path.join(root, dir)
  13. #os.removedirs(os.path.join(root, dir))
  14. shutil.rmtree(os.path.join(root, dir))
  15. return 'OK'

 

再次运行,发现子目录删除成功 . 祝贺你.

版权声明:本文为birds-zhu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/birds-zhu/p/8821020.html