0
我想用python使用SENNA。我得到以下IOError
:IOError與子進程
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
我的代碼如下:
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')
你有沒有試過''我的兄弟有一隻狗\ n''?另外,爲什麼不是你的命令'['senna-Win32.exe','-path',senna_path]'?你能解釋一下'blabla'和可執行的參數嗎? – Gribouillis
嗨,我正在嘗試使用以下github代碼:https://gist.github.com/dedan/1275662 – Anu
然後,也許該要點的作者有答案。傳遞給'sp.Popen()'的命令是一個在Cmd控制檯中工作的命令。打開cmd控制檯並調用senna程序,直到它適用於您的例句。一旦有效,它將在'sp.Popen()'中起作用。 – Gribouillis