首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带子进程的IOError

带子进程的IOError
EN

Stack Overflow用户
提问于 2016-12-11 06:23:59
回答 1查看 765关注 0票数 0

我正在尝试在python中使用SENNA。我得到以下IOError

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Python27\senna_test.py", line 18, in <module>
    tagged = StringIO(p.communicate(sentence)[0])
  File "C:\Python27\lib\subprocess.py", line 479, in communicate
    return self._communicate(input)
  File "C:\Python27\lib\subprocess.py", line 718, in _communicate
    self.stdin.write(input)
IOError: [Errno 22] Invalid argument

我的代码如下:

代码语言:javascript
复制
import os
import csv
from StringIO import StringIO
import subprocess as sp
from nltk.draw.tree import Tree, TreeWidget
from nltk.draw.util import CanvasFrame

senna_path="C:/Python27/senna/"
sentence = 'My brother has a dog'

# read senna output
p = sp.Popen(['blabla', '-path',  senna_path],
             executable=os.path.join(senna_path, 'senna-win32.exe'),
             stdin=sp.PIPE,
             stdout=sp.PIPE,
             stderr=sp.PIPE)
tagged = StringIO(p.communicate(sentence)[0])
table = csv.reader(tagged, dialect='excel-tab')
EN

回答 1

Stack Overflow用户

发布于 2017-11-27 21:59:08

相反,您可以使用这种方法

https://ronan.collobert.com/senna/download.html下载senna

如果您使用的是windows,那么:

python run .exe app with argument

使用senna-win32.exe直接

代码语言:javascript
复制
import subprocess
myinput = open('in.txt')
myoutput = open('out.txt', 'w')
p = subprocess.Popen('senna-win32.exe', stdin=myinput, stdout=myoutput)
p.wait()
myoutput.flush()

现在解析out.txt以获得结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41083560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档