001 发大招了 神器的效率工具--Java代码转python代码

今天发现一个好玩的工具:可以直接将java转成python?

1、 安装工具(windows 环境下面)?

先下载antlr:?

下载链接如下:

http://www.antlr3.org/download/antlr-3.1.3.tar.gz?

或者到百度云下载:

百度云链接:http://pan.baidu.com/s/1gdgXUM3 密码:2qrx?

?
?

下载成功并解压后,进入\antlr-3.1.3\runtime目录,输入CMD,在CMD中输入如下指令:

python setup.py install,以安装antlr包,如果报错,进入\antlr-3.1.3\runtime\Python目录下,进行同样的操作

?
?

?
?

?
?

?
?

?
?

2、安装完antlr的工具包后,如上步骤,在相同目录下,即\antlr-3.1.3\runtime\Python下,输入CMD,进入CMD中,输入指令:pip install java2python?,以在线安装java2python包?。如果通过指令的方式没法成功下载安装java2python包的话,也可以去github上下载java2python包,下载成功后,解压到本地,通过本地安装的方式安装java2python包。

java2python包的Github路径如下:

https://github.com/natural/java2python.git

?
?

?
?

安装过程中,遇到"‘pip‘ 不是内部或外部命令,也不是可运行的程序或批处理文件"的问题

解决"‘pip‘ 不是内部或外部命令,也不是可运行的程序或批处理文件"的问题的方法:

参考下面链接解决:https://blog.csdn.net/miss85246/article/details/81069276

解决后,pip命令可以正常使用

?
?

继续使用命令在线安装java2python包

?
?

?
?

遇到安装超时的问题:

?
?

安装超时,按照命令中给出的黄色提示,输入指令:python -m pip install --upgrade pip,以更新pip包

You are using pip version 9.0.1, however version 19.3.1 is available.

?
?

You should consider upgrading via the ‘python -m pip install --upgrade pip‘ command.

?
?

开始更新pip包

开始下载pip包

?
?

最终依然没有更新成功pip包,没法使用pip命令在线安装java2python包。

只好github上下载java2python包:https://github.com/natural/java2python.git,然后进行本地安装。

?
?

本地安装java2python包

参考链接:

python 安装本地包的方法

pip install *.whl ?????直接在pip install命令后添加whl包的全路径名就能本地安装成功了

下载需要的包,一般为zip、tar.gz等的压缩包,解压后,打开命令行,进入解压目录,使用python setup.py install命令安装。

python安装本地包

进入路径

?
?

在上图红色框中输入cmd

之后cmd中输入命令:python setup.py install

开始本地安装java2python包

?
?

本地安装java2python包安装成功

?
?

?
?

2、使用工具?

在Python27\Scripts目录下会生成一个j2py文件,它其实是个python文件?

cmd进入该目录下:?

然后将一个已写好的java程序跟踪下面的命令后面(.java 文件在python安装路径:\Python27\Scripts\目录下;如不在这个目录下,请带上具体路径;):?

python j2py your_java_file.java?

如下的java代码:

?
?

?
?

cmd进入上图目录下

?
?

?
?

?
?

输入命令:
python j2py+需要转为python文件的Java文件的路径及其文件名和后缀

?
?

本例中为需要转为python文件的Java文件TokenTest.java就在script目录下,
所以无需添加路径,所以本例的指令为


python j2py
TokenTest.java

?
?

执行命令出错,遇到报错,提示编码格式有问题:

File "j2py", line 120, in runTransform

tree = buildAST(source)

File "E:\Python\Python27\lib\site-packages\java2python\compiler\__init__.py", line 15, in buildAST

lexer = Lexer(StringStream(source))

File "E:\Python\Python27\lib\site-packages\antlr_python_runtime-3.1.3-py2.7.egg\antlr3\streams.py", line 336, in __init__

self.strdata = unicode(data)

UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe6 in position 1058: ordinal not in range(128)

?
?

?
?

解决办法:找到出错的文件E:\Python\Python27\lib\site-packages\antlr_python_runtime-3.1.3-py2.7.egg\antlr3\streams.py,

打开文件,添加下面三行代码:

import sys

reload(sys)

sys.setdefaultencoding(‘utf-8‘)

参考图:

自己的图:

?
?

保存对streams.py添加代码后的更改;

再次执行命令:python j2py
TokenTest.java

?
?

ok,执行成功!!!Java代码已经成功转成Python代码,将代码拷贝出来即可调试使用!

?
?

转换后的Python代码如下:


#!/usr/bin/env python

""" generated source for module TokenTest """

from __future__ import print_function

# package: com.example.demo

class TokenTest(object):

????""" generated source for class TokenTest """

????@classmethod

????def main(cls, args):

????????""" generated source for method main """

????????try:

????????????timestamp = str(Date().getTime())

????????????length = len(timestamp)

????????????integer = Integer.valueOf(timestamp.substring(0, length - 3))

????????????# =================================================================TEST=======================================================================

????????????testUrl = " https://api-open-test.myspacex.cn/access/token"

????????????# print("测试时间戳:"+integer);

????????????appId = "73e311b7-89cb-b2c3-754f-24aa383bf873"

????????????key = "925985d0dced69adf7741eac7e6a6850"

????????????s2 = genHMAC(appId + "|" + integer, key)

????????????# print("测试签名:"+base64Url(s2));

????????????testToken = sendGet(testUrl, "id=" + appId + "&timestamp=" + integer + "&valid_time=36000&sign=" + base64Url(s2))

????????????testMap = JSON.parse(testToken)

????????????print("测试token:" + testMap.get("data"))

????????except
Exception
as e:

????????????#??TODO Auto-generated catch block

????????????e.printStackTrace()

?
?

????@classmethod

????def base64Url(cls, str_):

????????""" generated source for method base64Url """

????????str_ = str_.replaceAll("\\=", "")

????????str_ = str_.replaceAll("\\+", "-")

????????str_ = str_.replaceAll("\\/", "_")

????????return str_

?
?

????HMAC_SHA1_ALGORITHM = "HmacSHA1"

?
?

????@classmethod

????def genHMAC(cls, data, key):

????????""" generated source for method genHMAC """

????????result = None

????????try:

????????????# 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称

????????????signinKey = SecretKeySpec(key.getBytes(), cls.HMAC_SHA1_ALGORITHM)

????????????# 生成一个指定 Mac 算法
的 Mac 对象

????????????mac = Mac.getInstance(cls.HMAC_SHA1_ALGORITHM)

????????????# 用给定密钥初始化 Mac 对象

????????????mac.init(signinKey)

????????????# 完成 Mac 操作

????????????rawHmac = mac.doFinal(data.getBytes())

????????????result = Base64.encodeBase64(rawHmac)

????????except NoSuchAlgorithmException as e:

????????????System.err.println(e.getMessage())

????????except InvalidKeyException as e:

????????????System.err.println(e.getMessage())

????????if None != result:

????????????return
str(result)

????????else:

????????????return None

?
?

if __name__ == ‘__main__‘:

????import sys

????TokenTest.main(sys.argv)

?
?

?
?

参考链接:

https://www.cnblogs.com/ceo-python/p/11601811.html

?
?

https://jingyan.baidu.com/article/3c343ff7fb279a0d377963a0.html

原文地址:https://www.cnblogs.com/xlfcjx/p/11770423.html

时间: 2024-11-07 14:05:46

001 发大招了 神器的效率工具--Java代码转python代码的相关文章

如何在Java中调用Python代码

有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调用对方的代码”. 下面我将举一些简单的小例子,借此说明:如何在Java中调用Python代码. 看懂这篇文章只需要具备: 熟悉Java的基本语法 懂一点点Python 主要内容如下: 什么是Jython? 一个HelloPython程序 在Jvm中执行Python脚本 仅在Java中调用Python

Python代码分析工具:PyChecker、Pylint

1 概述 PyChecker是Python代码的静态分析工具,它能够帮助查找Python代码的bug,而且能够对代码的复杂度和格式等提出警告. PyChecker可以工作在多种方式之下.首先,PyChecker会导入所检查文件中包含的模块,检查导入是否正确,同时检查文件中的函数.类和方法等. PyChecker可以检查出来的问题有如下几种: 全局量没有找到,比如没有导入模块 传递给函数.方法.构造器的参数数目错误 传递给内建函数和方法的参数数目错误 字符串格式化信息不匹配 使用不存在的类方法和属

这7大神器, 让你的Python 代码更易于维护

当软件项目进 入"维护模式"时,对代码的可读性和编码标准经常就忽略了(甚至从一开始就没有建立起这些标准.)但是,在代码库中保持一致的风格和测试标准是减少维护负担的重要因素,它能确保未来的开发人员能够快速了解新的项目情况 - 并保持项目的良好运行 保护项目未来可维护性的一个好方法就是使用外部库来检查你的代码运行状况.以下是我们最喜欢的一些用于检查代码的库(包含检查PEP 8和其他样式错误),让代码风格保持一致,并确保在项目成熟时的测试覆盖率保持在可接受范围. 检查你的代码风格 PEP 8

python代码检查工具pylint 让你的python更规范

1.pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅参考资料)和有潜在问题的代码.目前 Pylint 的最新版本是 pylint-0.18.1. Pylint 是一个 Python 工具,除了平常代码分析工具的作用之外,它提供了更多的功能:如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等. Pylint 的一个很大的好

Java效率工具Lombok使用与原理

Java效率工具Lombok使用与原理 我个人觉得 Lombok是一个优化Java代码以及提升开发效率不错的工具.Lombok 的Github地址为:https://github.com/rzwitserloot/lombok ,目前已经有7.9k star.Lombok主要为Java提供了不少语法糖,其中很多的设计都符合<Effective Java>所描述的Java编程最佳实践.Lombok 的学习成本很低,几乎可以直接上手,但是在团队开发的时候要注意,如果团队开发要使用这种工具一定要沟通

那些年尝试过的效率工具之Total Commander

昨天电脑文件很乱,想整理一下发现移动.复制文件要来回目录切换很麻烦,突然就又想起了用Total Commander——简称TC,很久之前尝试过但没坚持使用的工具. 借此机会总结一下自己对TC的认识,后续再陆续回顾总结一下尝试用过的其它效率工具. 1.尝试使用 刚工作那会儿,对提升效率软件很痴迷,无意中网上看到善用佳软介绍的TC, 发现资源管理占用系统资源不多,但是功能却可以做的如此强大: 左右双窗口,可以很方便的复制移动文件: 批量重命名,很方便的处理一些有规律的要重命名的场景: 展开目录树,可

Android 开源项目android-open-project开发工具及测试工具解析 开发效率工具,开发自测相关,测试工具,开发及编译环境,其他

主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Parceler 通过注解及工具类自动完成实体类 Parcelable及值传递 项目地址:https://github.com/johncarl81/parceler Json2Java 根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson Annotations对应代码自动生成.期待后续的提取父类以及多url构建整个工程的功能 项目地址:https://github.com/jonfhancoc

Java反编译工具 Java Decompiler

反编译JAR包工具 Java Decompiler 官方地址:http://java-decompiler.github.io/ 原文地址:https://www.cnblogs.com/fightingtong/p/11848705.html

我的效率工具分享

我的效率工具 这个系列的最后一文,介绍一下我电脑上的其他效率工具. 重度健忘症患者的福音-滴答清单 滴答清单严格上来说并不算一个特别优秀的GTD类的软件. 所谓GTD(Get Things Done)也是所谓的城市精英们提出的一个时间管理的概念.有兴趣的可以自行搜索了解一下.可能有人会把此类软件用的出神入化,但是对于我来说,这玩意儿就是个好用的备忘录... 这里是官网地址:https://dida365.com/ 为什么是滴答清单而不是其他的软件? 滴答清单的优点: 体量小,无论手机APP还是P