java - 使用从 Java 导入的自定义模块运行 Python 脚本
问题描述
我想从 Java 的 python 模块触发一些命令的执行。我的脚本执行时没有错误消息,但没有任何效果。我在 Java 中使用的代码如下:
ProcessBuilder pb = new ProcessBuilder("python", "nerDemoTP/python/spacy_test.py");
pb.redirectOutput(Redirect.INHERIT);
Process p;
try {
p = pb.start();
p.waitFor();
} catch (IOException e1) {
... }
如果我的 .py 文件只包含 print('hello world'),它就可以工作,然后我会在 Eclipse 控制台中看到它。但是我的python脚本应该做什么:
from SpacyNER import SpacyNERExtractor
ner_extractor = SpacyNERExtractor('medium', 'sentences_nyt_200.txt')
annotated_df, entities_dict = ner_extractor.generate_extractions()
ner_extractor.store_predictions('test.csv')
print('spacy extractions done!')
我的 SpacyNER 模块定义如下:
import pandas as pd
import numpy as np
import spacy
import en_core_web_md
import en_core_web_lg
import operator
import time
import re
class SpacyNERExtractor:
def __init__(self, model, text_file):
if model == 'medium':
self.spacy_model = en_core_web_md.load()
else:
self.spacy_model = en_core_web_lg.load()
self.sent_df = pd.read_csv(text_file, sep='\n', header=None, error_bad_lines = False)
self.sent_df.columns=['sentence']
def set_new_sent_df(self, df_new):
self.sent_df = df_new
def store_predictions(self, file_name):
self.df_predictions_spacy.to_csv(file_name,sep="#", index=False)
...
它必须与自定义模块的导入有关,但我不知道如何处理这个问题。此外,当我从命令行执行脚本时,即 python3.6 spacy_test.py,它可以工作。任何帮助表示赞赏!
解决方案
推荐阅读
- checkbox - 重新加载表单时取消选中 Domino Classic Web 复选框
- javascript - 加载多个 CSV 并将它们分别存储在一个单独的数组中
- java - jpa - 更新和分离的持久实体会发生什么
- python-3.x - 使用 subprocess.Popen 启动 pyuic5
- reactjs - 如何在 auth0-js 中刷新后保持用户登录?
- ios - 输入文本字段时在文本字段字符之间添加连字符
- javascript - ChartJS CustomTooltips 中的图像
- python - 如何在 CPython 源代码中找到 [::-1] (python 中的反转列表)的实现
- c# - 构建错误 -- Selenium -- 无法在声明中指定构造函数参数
- ios - 我的 webview 仅加载 https,但我想要 http 网站。那可能吗?