Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么java重定向失败?_Python_Shell - Fatal编程技术网

Python 为什么java重定向失败?

Python 为什么java重定向失败?,python,shell,Python,Shell,我在这里检查了类似的java重定向问题,但找不到解决问题的方法 我试图在Ubuntu18.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 &g

我在这里检查了类似的java重定向问题,但找不到解决问题的方法

我试图在Ubuntu18.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失败)

语句更改\u Read2Files\u 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'
我不熟悉python和java。希望这是一个快速修复标记化_sent.sh的方法

感谢您的帮助


第68行调用“tokenize_sent.sh”的python代码段:

NEWLINE=''
def标记化句子(文本):
打开('tmp/in.txt','w')。写入(text.replace('\n\n',换行))
操作系统('Datasets/stanford-parser-full-2017-06-09/tokenize_sent.sh')
tokens=open('tmp/out.txt').read().split('\n'))
打印('数据集中的令牌总数',len(令牌))
return[如果len(token)>0,则令牌中的令牌的令牌]

运行“SentenceChange\u Read2Files\u MASTER.py”时出错

Datasets/stanford-parser-full-2017-06-09/tokenize_sent.sh:第7行:../tmp/out.txt:没有这样的文件或目录
回溯(最近一次呼叫最后一次):
文件“SentenceChange\u Read2Files\u MASTER.py”,第162行,在
更改=更改书本(打开)(前缀+简·奥斯汀·诺桑格尔)
Abbey.txt').read(),打开(前缀+Bram Stoker\uuuu Dracula.txt').read())
文件“SentenceChange\u Read2Files\u MASTER.py”,第90行,在change\u book中
toChangeSent=标记化句子(toChange)
文件“SentenceChange\u Read2Files\u MASTER.py”,第68行,标记化句子
tokens=open('tmp/out.txt').read().split('\n'))
FileNotFoundError:[Errno 2]没有这样的文件或目录:“tmp/out.txt”
FileNotFoundError:[Errno 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
放入所有路径都相对的目录中,或者(更好)创建一个不依赖于相对路径(或者相对路径显式传递给每个脚本)的解决方案,但这超出了本答案的范围。

欢迎使用堆栈溢出!请不要标记与您的问题无关的语言。由于您的问题与此无关,我已经为您删除了此标记。请注意,当您运行
foo>bar
时,重定向到
bar
发生在程序
foo
运行之前(此时shell仍在设置程序的进程环境,其中包括定向其输入和输出)。因此,写入的语言
foo
不可能改变重定向是否成功。
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'