如何复现行为
- 轻松创建一个Seq2seq项目
- 选择Excel格式导入
个人分析
目前,无法导入Excel。在检查代码后,我发现这是一个代码错误。
代码错误位置和类:/doccano/backend/data_import/pipeline/parsers.py:ExcelParser
错误原因:Doccano上传的文件会修改文件名,导致丢失Excel后缀。然而,Excel文件的内部解析使用了pyexcel库,该库似乎没有方法来识别具有不一致后缀的文件,导致Excel上传失败。
临时修改计划
class ExcelParser(Parser):
"""ExcelParser is a parser to read a excel file."""
def __init__(self, **kwargs):
self._errors = []
def parse(self, filename: str) -> Iterator[Dict[Any, Any]]:
fn = filename + ".xlsx"
try:
os.rename(filename, fn)
rows = pyexcel.iget_records(file_name=filename)
for line_num, row in enumerate(rows, start=1):
yield {LINE_NUMBER_COLUMN: line_num, **row}
except pyexcel.exceptions.FileTypeNotSupported as e:
error = FileParseException(filename, line_num=1, message=str(e))
self._errors.append(error)
finally:
os.rename(fn, filename)
@property
def errors(self) -> List[FileParseException]:
return self._errors
要复现的文件
你的运行环境
我是基于GitHub readme中关于Docker Compose的介绍开始的。因此,整个启动环境没有做任何更改。
1条答案
按热度按时间gcxthw6b1#
如何重现行为
个人分析
这个时候是没有办法导入Excel的。检查代码后发现是代码bug。 代码错误位置和类别:
/doccano/backend/data_import/pipeline/parsers.py:ExcelParser
bug原因:Doccano上传的文件会修改文件名,导致Excel后缀丢失。然而Excel文件的内部解析使用的是pyexcel,该库似乎没有办法识别后缀不一致的文件,导致Excel无法上传。
临时改造方案
重现文件
示例.xlsx
您的环境
我是根据github的readme上对docker compose的介绍开始的。 因此,整个启动环境没有做任何改变。
我修改了您的代码,再文本分类的时候导入数据一样报错