我有自己的Python库,我想在OpenRefine中使用它作为在此描述
然而,OpenRefine中的所有Python代码似乎都是通过支持只有Python 2的Jython来实现的。
有没有一种在Python3中运行OpenRefine代码的方法?
干杯
发布于 2021-12-29 06:36:48
简短回答:不。Openrefine使用Jython,目前Jython基于python2.7,没有立即或短期的计划转向3.X版本。
但。
一旦您在您的计算机上安装了python3,就有一个技巧可以做到这一点。Python2允许执行命令行脚本/工具,并收集结果。
这个简单的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脚本,但也挖掘,卷发等.
用例:假设我在A列中有一组internet域,我想在这些域上执行一个dig SOA命令。
这个脚本是纯python2的,不依赖额外的库,应该永远工作。
免责声明:通过第三方应用程序执行本地代码应该谨慎。
发布于 2021-12-29 22:31:29
我需要类似的东西(必须“猜测”一列的文本是写的语言),而且,我发现一个很好的解决方案,并且工作得很快(有一些“额外的特性”很容易添加),就是将我的python3程序包装成一个烧瓶wrap (大约花了10分钟),然后从OpenRefine中用“通过获取URL添加列”来使用它。
额外的好处是,在我们在现场拥有的最快的机器上运行它是相当容易的,添加缓存等等。
我唯一希望看到的改进(在OpenRefine的一侧)是,可以选择并行获取多个URL,然后您可以在几台机器上运行多个烧瓶实例,并加快速度。
https://stackoverflow.com/questions/70515655
复制相似问题