Cannot run program python: CreateProcess

Java调用在中运行报错: run"":error=2, 系统找不到指定的文件 。
解决方法:
Run --》Run ... --》 - --》 New , --》Name设置为:PATH , --》Value设置为:的安装路径 , 例如:I:\
Java调用相关问题
如果脚本中需要用到第三方库 , 则最好要用.().exec的方法来从Java中调用 。

Cannot run program python: CreateProcess

文章插图
新建 test.py脚本
import sysdef hello(name,age,num):print('name:'+name)print('age:'+age)print('num:'+num)total = age+numprint('total:'+total) return total;if __name__ == '__main__':hello(sys.argv[1], sys.argv[2], sys.argv[3])
需要引用sys , 传入的参数用sys.argv[1]、sys.argv[2]、sys.argv[3]表示 。其中需要注意的是接收参数从sys.argv[1]开始 , sys.argv[0]是脚本的参数地址 , 没有实际作用 。
== ''的作用
在中 , 一个.py文件就是一个模块 , 一般情况下 , 模块的名字就是文件名(不包括扩展名.py) 。
全局变量存放的就是模块的名字 。
是当前模块名 , 当模块被直接运行时特殊变量name等于main , 所以就等于
假如被hello.py导入时 , 特殊变量name等于hello , 所以就不等于
Cannot run program python: CreateProcess

文章插图
一个源码文件除了可以被直接运行外 , 还可以作为模块(也就是库)被导入 。不管是导入还是直接运行 , 最顶层的代码都会被运行( 用缩进来区分代码层次) 。而实际上在导入的时候 , 有一部分代码我们是不希望被运行的 。
对于很多编程语言来说 , 程序都必须要有一个入口 , 而则有不同 , 它属于脚本语言 , 不像编译型语言那样先将程序编译成二进制再运行 , 而是动态的逐行解释运行 。也就是从脚本第一行开始运行 , 没有统一的入口 。
返回结果
Java调用时 , 不能通过语句来获取返回值 , 而只能通过print将结果写入到标准输出流中 , 然后在Java中通过标准输入流来读取到返回结果 。
因此 , 如果想得到返回结果 , 就需要在文件中做修改 , 通过print函数将需要的结果返回到Java程序中 。
public static void main(String[] args) {try {String[] arguments = new String[] { "python", "I:\\test.py", "张三", "23", "100" };Process process = Runtime.getRuntime().exec(arguments);BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));String line = null;while ((line = in.readLine()) != null) {System.out.println(line);}in.close();//java代码中的process.waitFor()返回值为0表示我们调用python脚本成功 , //返回值为1表示调用python脚本失败 , 这和我们通常意义上见到的0与1定义正好相反int re = process.waitFor();System.out.println(re);} catch (Exception e) {e.printStackTrace();}}
运行结果:
【Cannot run program python: CreateProcess】name:张三age:23num:100total:231000