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)

参考技术A 你在while循环里加行代码
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()打印出现空行的解决办法

Python中的异步cmd或readline

bufferedreaderreadline换行符不完全卡死

带有 python 2.7 的 Windows 上的 Readline 功能