我在这里检查了类似的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脚本从项目目录运行,该目录包含所有必需的文件夹及其子文件夹,包括 所需的模型和斯坦福解析器等。
数据集
推断发送
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'
答案 0 :(得分:1)
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
进入所有路径都相对的目录,或者(更好)创建一个不依赖相对路径(或相对路径明确传递给每个脚本的位置)的解决方案),但这不在此答案的范围内。