Python奇怪BUG整理

发布于:2025-05-01 ⋅ 阅读:(32) ⋅ 点赞:(0)

GBK编码报错

解决方法

加上encoding='utf-8'

报错信息 

UnicodeDecodeError: 'gbk' codec can't decode byte 0xbd in position 8: illegal multibyte sequence

分析

这个错误是因为读取的 CSV 文件不是 GBK 编码的(可能是 UTF-8 或其他编码),但 Python 默认使用 GBK 解码。解决方法是指定正确的文件编码方式。

修改

import csv
import sys
import re
input_file = 'D:/pythoncode/aiSelf/supplier_data.csv'
output_file = 'D:/pythoncode/aiSelf/supplier_data3.csv'
pattern = re.compile(r'(a2.*)')
# with open(input_file, 'r', newline='') as csv_in_file:
#     with open(output_file, 'w', newline='') as csv_out_file:

with open(input_file, 'r', newline='', encoding='utf-8') as csv_in_file:
    with open(output_file, 'w', newline='', encoding='utf-8') as csv_out_file:
        filereader = csv.reader(csv_in_file)
        filewriter = csv.writer(csv_out_file)
        header = next(filereader)
        filewriter.writerow(header)
        for row_list in filereader:
            invoice_number = row_list[2]
            if pattern.search(invoice_number):
                filewriter.writerow(row_list)

plt.show()报错

解决方法

法一:将plt.show()改为plt.savefig('图片名'.png)

法二:用其他后端,如TkAgg

报错信息

Traceback (most recent call last):
  File "D:\pythoncode\aiSelf\matplotlibtest.py", line 8, in <module>
    plt.show()
  File "E:\python\python312\Lib\site-packages\matplotlib\pyplot.py", line 614, in show
    return _get_backend_mod().show(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.......(省略)

分析

这是PyCharm 的 Matplotlib 后端兼容性问题导致的

修改

法一:

import matplotlib.pyplot as plt
categories = ['a','b','c','d']
values = [10,24,15,8]
plt.bar(categories, values)
plt.xlabel('category')
plt.ylabel('count')
plt.title('category counts')
# plt.show()
plt.savefig('zhuzhuangtutest.png')

法二:

import matplotlib
matplotlib.use('TkAgg')  # 或者其他可用的后端,如 'Qt5Agg'
import matplotlib.pyplot as plt
categories = ['a','b','c','d']
values = [10,24,15,8]
plt.bar(categories, values)
plt.xlabel('category')
plt.ylabel('count')
plt.title('category counts')
plt.show()


网站公告

今日签到

点亮在社区的每一天
去签到