【python错误解决】TypeError:a bytes-like object is required,not ‘str‘

在python2版本中,
打开csv文件时要用binary模式打开,即带b的方式,如wb,ab等,而不能用文本模式,如w,w+,a+等。否则,使用witerrow写,会产生空行。

但在python3版本中,直接使用wb写入式打开文件,也会出错,如下:

filename3="6-cos-result.csv"
out = open(filename3,'wb+')
csv_write = csv.writer(out,dialect='excel')
    
data_num=100#
for n in range(0,100):
    print ("第",str(n+1),"个目标用户")
    m=11
    for k in range(m):

        if index1[k][n]!=n:
            temp=[]
            num=int(index1[k][n])
            temp.append(num+1)
            temp.append(data1[k][n])
            csv_write.writerow(temp)     
out.close()

出现错误:
Traceback (most recent call last):
在这里插入图片描述

此时,把out = open(filename3,‘wb+’)改为out = open(filename3,‘w+’),
此时程序正常运行,但是,写入的表格中出现空行,如下:

在这里插入图片描述
此时,需要利用,with open(filename3,‘w’,newline=‘’) as f:语句,则能够实现消除空行的问题:

filename3="6-cos-result.csv"
with open(filename3,'w',newline='') as f:
    csv_write=csv.writer(f,dialect='excel')
        
data_num=100#
for n in range(0,100):
    print ("第",str(n+1),"个目标用户")
    m=11
    for k in range(m):

        if index1[k][n]!=n:

            temp=[]
            num=int(index1[k][n])
            temp.append(num+1)
            temp.append(data1[k][n])
            csv_write.writerow(temp)       
f.close()

此时,由于缩进问题,出现错误:

在这里插入图片描述

filename3="6-cos-result.csv"
with open(filename3,'w',newline='') as f:
    csv_write=csv.writer(f,dialect='excel')

    data_num=100#
    for n in range(0,100):
        print ("第",str(n+1),"个目标用户")
        m=11
        for k in range(m):

            if index1[k][n]!=n:    
                temp=[]
                num=int(index1[k][n])
                temp.append(num+1)
                temp.append(data1[k][n])
                csv_write.writerow(temp)
      
f.close()

错误解决,程序正常执行

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值