AttributeError:' _io.TextIOWrapper'对象没有属性' decode'

时间:2017-07-27 08:41:37

标签: python

我尝试阅读多个文本文件,进行分词(使用jieba),然后将结果分别保存到CSV文件中。它显示

AttributeError: '_io.TextIOWrapper' object has no attribute 'decode'  

感谢任何人的帮助。

python代码是:

import jieba
import csv
import glob

list_of_files = glob.glob('C:/Users/user/Desktop/speech./*.txt')           
for file_name in list_of_files:

    FI = open(file_name, 'r')
    FO = open(file_name, 'w')
    seglist = jieba.cut(FI, cut_all=False)
    w = csv.writer(FO)  
    w.writerows(seglist)  
    FI.close()
    FO.close()

2 个答案:

答案 0 :(得分:0)

您似乎需要将字节发送到剪切而不是文件对象

尝试使用此代码:

list_of_files = glob.glob('C:/Users/user/Desktop/speech./*.txt')           
for file_name in list_of_files:
    with  open(file_name, 'rb') as f:
        text = f.read()


    seglist = jieba.cut(text, cut_all=False)

    with open(file_name, 'w') as f:
        w = csv.writer(f)  
        w.writerows(seglist)  

答案 1 :(得分:0)

根据我从source code as examplejieba.cut definition阅读的内容,似乎jieba.cut需要字符串作为参数。

但是你提供的是file

的实例
seglist = jieba.cut(FI.read(), cut_all=False)

修正了我所看到的问题。 ( FI.read()是修复)。

顺便说一下,不要调用像FI / FO这样的变量,这是常量或类的有效名称,但不是变量。

明确胜过隐式:优先选择:file_output& file_input