[英]Why does java redirect fail?
我在这里检查了类似的Java重定向问题,但是找不到解决我问题的方法。
我正在尝试在ubuntu 18.04中运行python 3.6脚本,该脚本通过bash脚本调用Java程序。
原始编码器确认问题出在“ tokenize_sent.sh”中包含的路径上,但是以下几个重定向测试产生了相同的错误。
tokenize_sent.sh脚本:
#!/usr/bin/env bash
java edu.stanford.nlp.process.DocumentPreprocessor ../tmp/in.txt > ../tmp/out.txt
Bash脚本位于此处:
Datasets/stanford-parser-full-2017-06-09/tokenize_sent.sh
好消息是python脚本/ bash正在将正确的文本文件写入项目目录中的../tmp/in.txt。
python脚本从项目目录运行,该目录包含所有必需的文件夹及其子文件夹,包括必需的模型和stanford解析器等。
数据集
推断
tmp(正确的in.txt写入此处,但out.txt失败)
SentenceChange_Read2Files_MASTER.py
我是python和java的新手。 希望这是对tokenize_sent.sh的快速修复。
任何帮助表示赞赏。
第68行的python片段,调用“ tokenize_sent.sh”:
NEWLINE = '<NEWLINE>'
def tokenize_sentences(text):
open('tmp/in.txt', 'w').write(text.replace('\n\n', NEWLINE))
os.system('Datasets/stanford-parser-full-2017-06-09/tokenize_sent.sh')
tokens = open('tmp/out.txt').read().split('\n')
print('Total tokens in dataset', len(tokens))
return [token for token in tokens if len(token) > 0]
运行“ SentenceChange_Read2Files_MASTER.py”时出错
Datasets/stanford-parser-full-2017-06-09/tokenize_sent.sh: line 7: ../tmp/out.txt: No such file or directory
Traceback (most recent call last):
File "SentenceChange_Read2Files_MASTER.py", line 162, in <module>
changed = change_book(open(prefix + 'Jane Austen___Northanger
Abbey.txt').read(), open(prefix + 'Bram Stoker___Dracula.txt').read())
File "SentenceChange_Read2Files_MASTER.py", line 90, in change_book
toChangeSent = tokenize_sentences(toChange)
File "SentenceChange_Read2Files_MASTER.py", line 68, in tokenize_sentences
tokens = open('tmp/out.txt').read().split('\n')
FileNotFoundError: [Errno 2] No such file or directory: 'tmp/out.txt'
FileNotFoundError:[错误2]没有这样的文件或目录:'tmp / out.txt'
表示相对于您运行脚本的目录没有文件tmp/out.txt
。 所以,当你运行Datasets/stanford-parser-full-2017-06-09/tokenize_sent.sh
不找里面的文件./Datasets/stanford-parser-full-2017-06-09
而是.
。
解决方案是将cd
放入所有路径都相对的目录中,或者(更好)创建一个不依赖相对路径(或相对路径显式传递给每个脚本的位置)的解决方案,但这不在这个答案的范围。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.