Java 调用Shell命令

我在网上看见Java调用python的大部分方案是Java调用Shell命令执行python脚本。

Java 调用Shell命令_第1张图片
Java 调用Shell命令

关于使用Runtime.getRuntime().exec()执行python脚本有几点要注意的地方,首先是中文编码问题,其次是python文件开头指定解释器路径的问题。

在windows下,cmd默认是gbk,所以python文件开头要指定 # -*- coding:gbk -*-,java代码InputStreamReader要指定gbk解码

在Linux(centos)下,bash默认utf8,所以python文件开头要指定# -*- coding:utf-8 -*-,java代码InputStreamReader要指定utf-8解码

还有这个python文件开头指定解释器路径问题,如果是使用python xxx.py命令,可以无视python开头的#!/usr/bin/env python,因为根本没用上。如果是放到Linux下希望像调用shell脚本一样使用./xxx.py运行py脚本,请先给xxx.py权限(chmod 777 ./xxx.py),然后在python文件开头加上#!/usr/bin/env python。前提是你要搞清楚linux上的python版本,有的机子上python指向python2,而python3才指向python3,而有的机子python指向的就是python3,所以...有些文件加上#!/usr/bin/python3才是正确的。

如果不知道以上这些,你的程序依然运行得好好的,说明运气好,python3编码这里的坑官方稍微填上一些,python文件不指定编码,使用python3解释器执行脚本也没啥问题。

你可能感兴趣的:(Java 调用Shell命令)