OpenRefine 是否支持 Python3?
Does OpenRefine support Python3?
我有自己的 Python 库,我想在 OpenRefine 中将其用作 described here
然而,OpenRefine 中的所有 Python 代码似乎都通过支持 only Python 2
的 Jython
有没有办法在 OpenRefine 中 运行 Python3 代码?
干杯
简短回答:否。 Openrefine 使用 Jython,它目前基于 python 2.7,目前或短期内没有迁移到 3.X 版本的计划。
但是。
只要在您的计算机上安装了 python3,就有一个技巧可以做到这一点。
Python2 允许执行命令行 script/tool,并收集结果。
这个简单的 python2 脚本可以做到这一点:
# This jython2.7 script has to be executed as jython, not GREL
# It allows you to execute a command (CLI) in the terminal and retrieve the result.
# import basic librairies
import time
import commands
import random
# get status and output of the command
status, output = commands.getstatusoutput(value)
# add a random between 2 and 5s pause to avoid ddos on servers... Be kind to APIs!
time.sleep(random.randint(2, 5))
# returns the result of the command
return output.decode("utf-8")
我用它来执行本地 python3 个脚本,还有 dig、curls 等...
用例:
假设我在 A 列中有一堆 Internet 域。我想在这些域上执行 dig SOA 命令。
- 我创建了一个基于 A 的列 B:“dig SOA”+value,它将提供我想要执行的确切命令。
- 我使用上面的 jython 脚本创建了一个基于 B 的 C 列。
- 然后我解析结果。
此脚本是纯 python2,不依赖额外的库,应该永远有效。
免责声明:第三方应用程序执行本地代码应谨慎。
我需要类似的东西(不得不“猜测”一个专栏的文本是用什么语言编写的),而且我发现这是一个很好的解决方案,而且工作速度非常快(有一些“额外功能”很容易添加)是将我的 python3 程序包装为一个烧瓶网络 API(花了 10 分钟),并通过“通过获取 URL 添加列”从 OpenRefine 使用它。
额外的好处是,在我们现场最快的机器上 运行 它相当容易,添加缓存等
我唯一希望看到的改进(在 OpenRefine 方面)是能够选择性地并行获取多个 URLs,然后你可以 运行 多个 flask 实例在几台机器上,并加快一点速度。
我有自己的 Python 库,我想在 OpenRefine 中将其用作 described here
然而,OpenRefine 中的所有 Python 代码似乎都通过支持 only Python 2
的 Jython有没有办法在 OpenRefine 中 运行 Python3 代码?
干杯
简短回答:否。 Openrefine 使用 Jython,它目前基于 python 2.7,目前或短期内没有迁移到 3.X 版本的计划。
但是。
只要在您的计算机上安装了 python3,就有一个技巧可以做到这一点。 Python2 允许执行命令行 script/tool,并收集结果。
这个简单的 python2 脚本可以做到这一点:
# This jython2.7 script has to be executed as jython, not GREL
# It allows you to execute a command (CLI) in the terminal and retrieve the result.
# import basic librairies
import time
import commands
import random
# get status and output of the command
status, output = commands.getstatusoutput(value)
# add a random between 2 and 5s pause to avoid ddos on servers... Be kind to APIs!
time.sleep(random.randint(2, 5))
# returns the result of the command
return output.decode("utf-8")
我用它来执行本地 python3 个脚本,还有 dig、curls 等...
用例: 假设我在 A 列中有一堆 Internet 域。我想在这些域上执行 dig SOA 命令。
- 我创建了一个基于 A 的列 B:“dig SOA”+value,它将提供我想要执行的确切命令。
- 我使用上面的 jython 脚本创建了一个基于 B 的 C 列。
- 然后我解析结果。
此脚本是纯 python2,不依赖额外的库,应该永远有效。
免责声明:第三方应用程序执行本地代码应谨慎。
我需要类似的东西(不得不“猜测”一个专栏的文本是用什么语言编写的),而且我发现这是一个很好的解决方案,而且工作速度非常快(有一些“额外功能”很容易添加)是将我的 python3 程序包装为一个烧瓶网络 API(花了 10 分钟),并通过“通过获取 URL 添加列”从 OpenRefine 使用它。
额外的好处是,在我们现场最快的机器上 运行 它相当容易,添加缓存等
我唯一希望看到的改进(在 OpenRefine 方面)是能够选择性地并行获取多个 URLs,然后你可以 运行 多个 flask 实例在几台机器上,并加快一点速度。