鱼C论坛

 找回密码
 立即注册
查看: 948|回复: 6

[已解决]关于031讲动动手0

[复制链接]
发表于 2020-6-19 20:59:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么我在分割语句那里总是错误,提示 TypeError: a bytes-like object is required, not 'str'
import pickle


def split_file(file_name):
    boy = []
    girl = []
    count = 1
    f = open('record.txt', 'rb')

    for each_line in f:
        if each_line[:6] != '======':
            (name, words) = each_line.split(':', 1) #就是这个':'
            if name == '小甲鱼':
                boy.append(words)
            if name == '小客服':
                girl.append(words)
        else:
            boy_file_name = 'boy_' + str(count) + '.txt'
            girl_file_name = 'girl_' + str(count) + '.txt'
            boy_file = open(boy_file_name, 'wb')
            girl_file = open(girl_file_name, 'wb')
            pickle.dump(boy, boy_file)
            pickle.dump(girl, girl_file)
            boy_file.close()
            girl_file.close()
            count += 1
            boy = []
            girl = []
    boy_file_name = 'boy_' + str(count) + '.txt'
    girl_file_name = 'girl_' + str(count) + '.txt'

    boy_file = open(boy_file_name, 'wb')
    girl_file = open(girl_file_name, 'wb')

    pickle.dump(boy, boy_file)
    pickle.dump(girl, girl_file)

    boy_file.close()
    girl_file.close()


split_file('record.txt')
最佳答案
2020-6-19 21:18:21
丿autistic 发表于 2020-6-19 21:16
那么我想知道   小甲鱼给的答案是直接用':'进行分割,上次我在做029讲习题的时候也是这样直接从文件中读 ...

第9行:
    f = open('record.txt', 'rb')
你打开方式是 rb,读出来的是 bytes。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-19 21:00:36 | 显示全部楼层
用小甲鱼的答案这里就可以,用我的就不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-19 21:01:00 | 显示全部楼层
本帖最后由 java2python 于 2020-6-19 21:02 编辑

百度检索很重要:
https://www.cnblogs.com/qiuya/p/10853383.html
Python报“TypeError:abytes-likeobjectisrequired,not‘str’”解决办法

解决办法非常的简单,只需要用上python的bytes和str两种类型转换的函数encode()、decode()即可!

str通过encode()方法可以编码为指定的bytes;

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法;

例:

str = 'this is test'

str = str.encode()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-19 21:01:07 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-6-19 21:02 编辑

文本文件用 rb,天秀

其他的还没看
import pickle


def split_file(file_name):
    boy = []
    girl = []
    count = 1
    f = open('record.txt')

    for each_line in f:
        if each_line[:6] != '======':
            (name, words) = each_line.split(':', 1) #就是这个':'
            if name == '小甲鱼':
                boy.append(words)
            if name == '小客服':
                girl.append(words)
        else:
            boy_file_name = 'boy_' + str(count) + '.txt'
            girl_file_name = 'girl_' + str(count) + '.txt'
            boy_file = open(boy_file_name, 'wb')
            girl_file = open(girl_file_name, 'wb')
            pickle.dump(boy, boy_file)
            pickle.dump(girl, girl_file)
            boy_file.close()
            girl_file.close()
            count += 1
            boy = []
            girl = []
    boy_file_name = 'boy_' + str(count) + '.txt'
    girl_file_name = 'girl_' + str(count) + '.txt'

    boy_file = open(boy_file_name, 'wb')
    girl_file = open(girl_file_name, 'wb')

    pickle.dump(boy, boy_file)
    pickle.dump(girl, girl_file)

    boy_file.close()
    girl_file.close()


split_file('record.txt')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-19 21:16:36 | 显示全部楼层
java2python 发表于 2020-6-19 21:01
百度检索很重要:
https://www.cnblogs.com/qiuya/p/10853383.html
Python报“TypeError:abytes-likeobje ...

那么我想知道   小甲鱼给的答案是直接用':'进行分割,上次我在做029讲习题的时候也是这样直接从文件中读取,也是直接用‘:’进行分割,都没有使用encode()的方法,为什么这次我使用的时候就提示报错了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-19 21:18:21 | 显示全部楼层    本楼为最佳答案   
丿autistic 发表于 2020-6-19 21:16
那么我想知道   小甲鱼给的答案是直接用':'进行分割,上次我在做029讲习题的时候也是这样直接从文件中读 ...

第9行:
    f = open('record.txt', 'rb')
你打开方式是 rb,读出来的是 bytes。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-19 21:21:27 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-6-19 21:18
第9行:你打开方式是 rb,读出来的是 bytes。

没注意到这里,谢谢解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表