问题描述:

今天在将数据model导出csv的时候,出现了TypeError: a bytes-like object is required, not 'str',跟之前相比,唯一的区别是当前的python版本是3.8.6的版本,之前是老一点的版本,code完全一样,但是3.8.6的版本出现了异常,原始code如下:

with open(r'D:\MyProjects\test.csv','wb') as csvFile:writer=csv.DictWriter(csvFile,fieldnames=cvaModel().__dict__.keys())writer.writeheader()dic=[item.__dict__ for item in models]writer.writerows(dic)

报错信息如下,在调用writeheader方法的时候,传入的fieldnames数据在内部抛出了异常,显示数据类型有问题:

  File ".\GZipTest.py", line 61, in <module>writer.writeheader()return self.writerow(header)File "D:\SoftDownLoad\MySQL\lib\csv.py", line 154, in writerowreturn self.writer.writerow(self._dict_to_list(rowdict))
TypeError: a bytes-like object is required, not 'str'

问题处理:

对报错的说明:在写入文件的时候,我们提出会遇到rb,wb,w这些指定读取的方式,wb表示的是以二进制形式写入到文件中,而w表达的是以文本形式写入到文件中,所以这里我们只需要将wb更改为w即可:

with open(r'D:\MyProjects\test.csv','w') as csvFile:writer=csv.DictWriter(csvFile,fieldnames=cvaModel().__dict__.keys())writer.writeheader()dic=[item.__dict__ for item in models]writer.writerows(dic)

但是至于为什么之前在老的Python版本下,以同样的code运行并没有出现问题,或许是哪儿的配置不一样,或者跟csv引用的版本有关系,这个倒是没有去细究。

扩展 Pandas读取问题:

除此之外,在用pandas将保存的csv另存为excel的时候,也出现了encoding不对的问题,具体报错信息如下:

Traceback (most recent call last):
  File ".\GZipTest.py", line 81, in <module>
    c=pd.read_csv(r'D:\MyProjects\test.csv')
  File "D:\SoftDownLoad\MySQL\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "D:\SoftDownLoad\MySQL\lib\site-packages\pandas\io\parsers\readers.py", line 586, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "D:\SoftDownLoad\MySQL\lib\site-packages\pandas\io\parsers\readers.py", line 482, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "D:\SoftDownLoad\MySQL\lib\site-packages\pandas\io\parsers\readers.py", line 811, in __init__
    self._engine = self._make_engine(self.engine)
    return mapping[engine](self.f, **self.options)  # type: ignore[call-arg]
  File "D:\SoftDownLoad\MySQL\lib\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 69, in __init__
    self._reader = parsers.TextReader(self.handles.handle, **kwds)
  File "pandas\_libs\parsers.pyx", line 542, in pandas._libs.parsers.TextReader.__cinit__
  File "pandas\_libs\parsers.pyx", line 642, in pandas._libs.parsers.TextReader._get_header
  File "pandas\_libs\parsers.pyx", line 843, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas\_libs\parsers.pyx", line 1917, in pandas._libs.parsers.raise_parser_error
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd4 in position 38: invalid continuation byte

需要在读取csv的时候指定encoding为gbk之后才能正常读取到csv中的数据信息,然后将读取到的数据直接转换为Excel(当然在实际中,除非code需要,基本不会出现这种操作):

c=pd.read_csv(r'D:\MyProjects\test.csv',encoding='gbk')

c.to_excel(r'D:\MyProjects\test.xlsx',index=False,header=True)

因为一个错误导致的其他连锁反应还挺多的。细节决定成败!感谢支持和建议!

Python Csv TypeError: a bytes-like object is required, not ‘str‘相关推荐

  1. python write报错a byte-like object is required.not str

    办法一:根本原因是Python版本问题python2.x中要求用'wb',python3.x中要求用'w' 用open(filename,'w')方式 办法二:encode('ascii')

  2. Python Socket TypeError: a bytes-like object is required, not 'str' 错误提示

    <python核心编程>第三版,发现示例2-1代码返回错误-..纠结很久  发现这里python3.5和Python2.7在套接字返回值解码上有区别.  先介绍一下 python byte ...

  3. Python 3.5.2 TypeError: a bytes-like object is required, not 'str’问题解决方案

    运行环境Mac  Python 3.5.2 Q: http_response = """\ HTTP/1.1 200 OK Hello, World! "&qu ...

  4. Python异常:TypeError: a bytes-like object is required, not 'str'

    Python异常:TypeError: a bytes-like object is required, not 'str' import jsonstr = [{"userName&quo ...

  5. 成功解决TypeError: a bytes-like object is required, not 'str'

    成功解决TypeError: a bytes-like object is required, not 'str' 目录 解决问题 解决思路 解决方法 解决问题 TypeError: a bytes- ...

  6. 生成测试报告时遇到问题TypeError: a bytes-like object is required, not ‘str‘

    项目场景: 场景:使用python做自动化测试,用HTMLTestRunner生成自动化测试报告 问题描述 例如:做自动化测试时,用HTMLTestRunner生成自动化测试报告,报错TypeErro ...

  7. 成功解决TypeError: a bytes-like object is required, not ‘str‘

    出现问题: 在文件写操作时出现TypeError: a bytes-like object is required, not 'str' 意思是函数write需要的参数类型是字节对象不是字符串 解决办 ...

  8. Python更新数据库,解决转译字符与TypeError: XX format: a number is required, not str报错

    在使用python更新数据库的时候出现了好多坑,一个个填完之后整理出了完备的代码: import MySQLdb#链接数据库的套路操作 db = MySQLdb.connect("local ...

  9. a bytes-like object is required, not 'str'

    TypeError: a bytes-like object is required, not 'str' 问题分析 该问题主要是由于当前操作的字符串是bytes类型的字符串对象,并对该bytes类型 ...

  10. a bytes-like object is required, not 'str' pickle.loads pickle.dumps

    a bytes-like object is required, not 'str'  pickle.loads pickle.dumps pickle可以序列化任何简单对象. 解决方法:

最新文章

  1. 完整年份值必须介于_上 | 完整解释 Monad 程序员范畴论入门
  2. SQL Server日期格式的转换
  3. 常用开源工具、框架收藏
  4. MongoDB 与传统数据库的对比
  5. Python中的str与unicode处理方法
  6. Docker删除某个容器时失败解决方案
  7. DevExpress.XtraGrid 导出文本的bug
  8. svn主干开辟分支、分支合并到主干
  9. 【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵
  10. Exsi6.5修改主机密码
  11. php camp,Byte Camp
  12. SQL入门经典-思维导图
  13. Silicon Labs CP210x USB to UART Bridge_6.6.6.14_4-8-2013_6.1_x64,驱动程序64位环境,ESP32
  14. clk_get_rate函数
  15. win10添加打印机失败,无法正常使用打印机的解决办法
  16. Xinlix原语OSERDESE2的使用和仿真
  17. Snipaste截图界大咖
  18. Linux下使用KVM虚拟机运行MacOS和Checkra1n越狱工具
  19. 计算机等级考试excel试题,计算机等级考试试题及答案解析(Excel) -电脑资料
  20. ARM中MRS和MSR汇编指令

热门文章

  1. 详解POW工作量证明原理
  2. TFP-161/100/6MM/6MM/MPU
  3. window报错:文件系统错误 (-2147219196)
  4. 跨模态检索 | Visual Representation Learning
  5. 卡在硬盘启动计算机,插硬盘启动卡死了,怎么办?电脑维修方法
  6. MFCC和语谱图的关系
  7. 维京小队3dm中文版|维京小队中文免安装版
  8. WPF 通过Image控件实现多张图片的播放
  9. Calc3: Partial Derivative
  10. 了解KVM切换器的四种类形