PyCharm的类型警告: Expected type ‘SupportsWrite[bytes]‘, got ‘BinaryIO‘ instead

embedded/2024/11/23 18:35:52/

记录时使用的PyCharm版本:
PyCharm 2024.3 (Professional Edition)
Build #PY-243.21565.199, built on November 13, 2024

问题描述

当在PyCharm里使用pickle保存文件, 比如以下代码这样:

python">    with open(meta_save_path, 'wb') as f:pickle.dump(meta, f)

会发现PyCharm对此发出类型警告: Expected type 'SupportsWrite[bytes]', got 'BinaryIO' instead. 如下图这样:

unexpected

解决

放心, 这不是你的问题, 而是专属于PyCharm的锅. 只需要添加# noinspection PyTypeChecker这行注释在警告的代码上即可:

python">    with open(meta_save_path, 'wb') as f:# noinspection PyTypeCheckerpickle.dump(meta, f)

注: 虽然你也可以使用诸如typing.cast这样的方法来防止PyCharm报错, 但既然这段代码本身没问题, 只是PyCharm自身的误报, 那么这种"改正"也没什么道理.

参考

[1] https://stackoverflow.com/a/79049514/9532112
[2] https://youtrack.jetbrains.com/issue/PY-76404/Spurious-Expected-type-SupportsWritebytes-got-BinaryIO-instead-with-pickle.dump


http://www.ppmy.cn/embedded/139912.html

相关文章

为什么芯麦的 GC4931P 可以替代A4931/Allegro 的深度对比介绍

在电机驱动芯片领域,芯麦 GC4931P 和 A4931 都是备受关注的产品。它们在多种应用场景中发挥着关键作用,今天我们就来详细对比一下这两款芯片。 一、性能参数对比 (一)电流输出能力 A4931 具有一定的电流输出能力,但芯…

JVM(五、垃圾回收器)

经典的垃圾回收器大概有7种,这些收集器的目标、特性、原理、使用场景都有所区别,有的适用于年轻代,有的适用于老年代,图中展示的就是这7中垃圾回收器,如果两个垃圾回收器有连线,则表明可以配合使用。这个关…

27、js中声明变量

<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title></title> </head> <body> </body> <script> // js中声明变量用var // 变量名…

迅为RK3588开发板Android系统开发笔记允许usb调试

首先开发板烧写 Android12 系统&#xff0c;连接屏幕&#xff0c;烧写线&#xff0c;串口线&#xff0c;电源线。连接完毕后&#xff0c;接 着我们打开 usb 调试。步骤如下&#xff1a; 1.在屏幕上打开设置 app,如下图所示&#xff1a; 2 滑到最底部&#xff0c;点击“关于平…

8086汇编语言教程(入门到实践)

这里写目录标题 1.基础概念1.1. 什么是汇编语言&#xff1f;1.2. 8086微处理器简介 2.快速入门3.寄存器3.1. 8086的寄存器分类3.2. 寄存器的典型使用示例 4. 简单语法4.1. 赋值、输入输出4.2. 算数运算符4.3. 比较运算符4.4. 转移运算符4.5.逻辑命令 5. 案例5.1. 输出从 A 到 …

Linux离线安装Docker命令,简单镜像操作

解压安装包 首先&#xff0c;使用 tar 命令解压 docker-27.3.1.tgz 安装包&#xff1a; tar -zxvf docker-27.3.1.tgz 将二进制文件移动到可执行路径上的目录 接着&#xff0c;将解压出来的 Docker 二进制文件复制到系统的可执行路径&#xff08;通常是 /usr/bin/&#xff09…

socket连接封装

效果&#xff1a; class websocketMessage {constructor(params) {this.params params; // 传入的参数this.socket null;this.lockReconnect false; // 重连的锁this.socketTimer null; // 心跳this.lockTimer null; // 重连this.timeout 3000; // 发送消息this.callbac…

基于uniapp开发的微信H5图片上传压缩

安装Compressor&#xff0c;并在页面引入 npm i compressorjs import Compressor from "compressorjs" 具体使用代码 H5部分&#xff1a; <view class"h5upload" click"add"><view class""></view><view cla…