java运行python程序,.readLine()读出的内容为null, proc.waitFor();返回值为1,求解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java运行python程序,.readLine()读出的内容为null, proc.waitFor();返回值为1,求解相关的知识,希望对你有一定的参考价值。
代码如下:
Process proc;
try
proc = Runtime.getRuntime().exec("python F:\\python\\run1.py");// 执行py文件
//用输入输出流来截取结果
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = in.readLine()) != null)
System.out.println(line);
in.close();
proc.waitFor();
catch (IOException e)
e.printStackTrace();
catch (InterruptedException e)
e.printStackTrace();
run1.py内容如下:
import numpy as np
a = np.arange(12).reshape(3,4)
print(a)
line = decodeUnicode(line);
python3读取文件时readline()和read()的区别
先贴一下python读写文件的基本语句:
其他文件读写语句可参看:http://www.nnzhp.cn/blog/2016/12/19/python学习笔记三文件操作和集合/
先写一个read()和readline()语句的程序,看一下运行结果:
运行结果如下(结果不全,仅为示例):
可以看出,
name_frist=name.readline(),返回的是文件中的第一行hello。
name_str=name.read(),返回的是文件中的所有行,并且每行都是换行输出。
name_all=name.readlines(),返回的是一个list,即你写入的任何字符都会在这个list中输出。
这里我们就知道了单纯的读的操作,下面有个有意思的输出结果:
这是因为语句name5=name4.read(),name5的值是文件中的所有字符组成的一个list。
再使用
for line in name5:
print(line)
程序自动循环输出name5这个list,输出结果就是一个字母一个字母的输出了。
要改变着这种输出结果只需要for * in *的循环对象不是list就可以了。
示例如下:
以上是关于java运行python程序,.readLine()读出的内容为null, proc.waitFor();返回值为1,求解的主要内容,如果未能解决你的问题,请参考以下文章
python3读取文件时readline()和read()的区别
安装 readline 模块后 Python 3.6.1 崩溃
Python利用逐行读取readline()打印出现空行的解决办法