当前位置: 首页 > news >正文

15. 文件操作

一、什么是文件

  文件(file)通常是磁盘或固态硬盘上的一段已命名的存储区。它是指一组相关数据的有序集合。这个数据集合有一个名称,叫做文件名。文件名 是文件的唯一标识,以便用户识别和引用。文件名包括 3 个部分:文件路径 + 文件名主干 + 文件后缀名。所有的文件都通过流进行输入、输出操作。

二、文件的基本操作

  在 Python 中,内置了文件(File)对象。在使用文本对象时,首先需要通过内置的 opern() 方法创建一个文件对象,然后通过该对象提供的方法向文件中写入内容,以其使用 close() 方法关闭文件。

2.1、创建和打开文件

  在 Python 中,想要操作文件需要先创建或者打开指定的文件并创建文件对象,可以通过内置的 open() 函数来实现。open() 函数的定义如下:

open(file, mode='r', buffering=- 1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

  参数说明:

  • file:要创建或打开的文件名称,需要使用单引号或双引号括起来。如果要打开的文件和当前文件在同一个目录下,那么直接写文件名即可,否则需要指定完整的路径。
  • mode:可选参数,用于指定文件的打开模式。默认的打开模式为只读(r)模式。
  • buffering:可选参数,用于指定读写文件的缓冲模式。值为 0 表示不缓存,值为 1 表示缓存。如果大于 1,则表示缓冲区的大小。默认为缓存模式。

  mode 参数的参数值:

模式含义说明
r以只读模式打开文件,文件的指针将会放在文件的开头文件必须存在
r+打开文件后,可以读取文件内容,也可以写入新的内容覆盖原有内容(从文件头开始覆盖)
rb以二进制的格式打开文件,并且采用只读模式。文件的指针将会放在文件的开头,一般用于非文本文件
rb+以二进制的格式打开文件,并且采用读写模式。文件的指针将会放在文件的开头,一般用于非文本文件
w以只写模式打开文件文件存在,则将其覆盖,否则创建新的文件
w+打开文件后,先清空所有内容,使其变为一个空的文件,对这个空文件有读写权限
wb以二进制的格式打开文件,并且采用只写模式。文件的指针将会放在文件的开头,一般用于非文本文件
wb+以二进制的格式打开文件,并且采用读写模式。文件的指针将会放在文件的开头,一般用于非文本文件
a以追加模式打开一个文件如果文件已存在,文件指针放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件
a+以读写模式打开文件
ab以二进制的格式打开文件,并且采用追加模式。文件的指针将会放在文件的开头,一般用于非文本文件
ab+以二进制的格式打开文件,并且采用读写模式。文件的指针将会放在文件的开头,一般用于非文本文件
x独占模式创建文件如果文件不存在则创建,存在则报错,并且只能写不能读
# open()函数返回一个对象,这个对象就代表了当前打开的文件
file_object = open("text.txt")
print(file)

  在 windows 系统中使用路径时,可以用 / 代替 \,可以使用 \\ 进行转义,还可以使用原始字符串开代替。表示路径时,我们可以使用 .. 返回上一级目录,使用 ‘.’ 表示当前目录。如果目标文件距离当前文件比较远,此时可以使用绝对路径。绝对路径应该从磁盘的根目录开始书写。

# 使用/代替\
file_name = "./file/text.txt"# 使用\\进行转义
# file_name = ".\\file\\text.txt"# 使用原始字符串
# file_name = r".\file\text.txt"# open()函数返回一个对象,这个对象就代表了当前打开的文件
file_object = open(file_name)
print(file_object)

  在默认情况下,使用 open() 函数打开一个不存在的文件会报以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'hello.txt'

  使用 open() 函数以写模式打开一个不存在的文件,Python 会先创建文件,然后再往里面写内容。如果要写入的文件所在目录不存在,就会报错。

FileNotFoundError: [Errno 2] No such file or directory: './files/data.txt'

2.2、文件的关闭

  关闭文件后可以使用文件对象的 close() 方法。close() 方法先刷新缓冲区中还没有写入的信息,然后再关闭文件,这样可以将没有写入到文件的内容写入到文件中。在关闭文件后,便不能再进行写入操作。close() 方法的语法格式如下:

file_object.close()

  在 Python 中可以使用 with 语句,从而实现在处理文件时,无论是否抛出异常,都能保证 with 语句执行完毕后关闭已经打开的文件。with 语句的基本语法如下:

with open(file_object) as 文件对象:# 在with语句中可以直接用文件对下个做文件操作# 此时这个文件只能在with中使用,一旦with结束这个文件对象会自动close

三、文件的读取

3.1、写入文件内容

  在 Python 中,提供 open() 方法来向文件中写入内容。如果操作的是一个文本对象的话,则 write() 需要传递一个字符串作为参数。该方法可以分多次向文件中写入内容,写入完成以后,该方法会返回写入字符的个数。

file_object.write("文件内容")              # 将指定的内容写到指定文件中

  写入文件的前提是在打开文件时,指定模式为写模式或读写模式,否则将会报以下错误:

io.UnsupportedOperation: not writable

  如果写入的文件乱码,可以在打开文件时指定编码格式。

  在写入文件后,一定要调用 close() 方法关闭文件,否则写入的内容不会保存到文件中。这是因为当我们在写入文件内容时,操作系统不会立刻数据写入磁盘,而是先缓存起来,调用 close() 方法时,操作系统会保证把没有写入的数据全部写入到磁盘。

  在向文件写入内容后,如果我们不想马上关闭,也可以调用文件对象提供的 flush() 方法,把缓冲区的数据写入文件,这样也能保证数据全部写入磁盘。

file_name = "text.txt"lines = ["滕王高阁临江渚,佩玉鸣鸾罢歌舞。\n","画栋朝飞南浦云,珠帘暮卷西山雨。\n","闲云潭影日悠悠,物换星移几度秋。\n","阁中帝子今何在?槛外长江空自流。\n"
]
try:with open(file_name,'w',encoding='utf-8') as file_object:# 向文件中写入内容:for line in lines:file_object.write(line)
except FileNotFoundError:print(f"{file_name}不存在!")

  我们可以使用 writelines() 方法将列表中的内容一次写入到指定文件中。

file_object.writelines(list)            # 将列表中的内容一次写入到指定文件中
file_name = "text.txt"lines = ["滕王高阁临江渚,佩玉鸣鸾罢歌舞。\n","画栋朝飞南浦云,珠帘暮卷西山雨。\n","闲云潭影日悠悠,物换星移几度秋。\n","阁中帝子今何在?槛外长江空自流。\n"
]
try:with open(file_name,'w',encoding='utf-8') as file_object:# 向文件中写入内容:file_object.writelines(lines)
except FileNotFoundError:print(f"{file_name}不存在!")

  如果我们在 open() 函数以二进制的模式读写文件时,不能指定编码 encoding 参数,否则会报错。并且,我们要写入的内容必须是字节类型的数据。

file_name = "text.txt"lines = ["滕王高阁临江渚,佩玉鸣鸾罢歌舞。\n","画栋朝飞南浦云,珠帘暮卷西山雨。\n","闲云潭影日悠悠,物换星移几度秋。\n","阁中帝子今何在?槛外长江空自流。\n"
]
try:with open(file_name,'wb') as file_object:# 向文件中写入内容:for line in lines:file_object.write(line.encode("utf-8"))
except FileNotFoundError:print(f"{file_name}不存在!")

write() 和 writelines() 函数不会在字符串的末尾自动添加换行符,需要我们手动添加 \n。

3.2、读取文件内容

3.2.1、读取指定字符

  文件对象提供 read() 方法读取指定个数的字符,语法格式如下:

file_object.read([size])

  size 为可选参数,在文本模式下用来指定读取字符的个数。如果省略要读取字符的个数,则一次性读取所有内容。默认情况 read() 方法是一字节一字节的读取,效率比较低。在二进制模式下,用于指定读取的字节数。

  读取文件的前提是在打开文件时,指定模式为读模式或读写模式,否则将会报以下错误:

io.UnsupportedOperation: not readable
file_name = "text.txt"try:with open(file_name,encoding="utf-8") as file_object:# 向文件中写入内容:content = file_object.read()print(content)
except FileNotFoundError:print(f"{file_name}不存在!")

  read() 函数可以接收一个 size 作为参数,该参数用来指定要读取字符的数量。每一次读取都是从上一次读取到的位置开始读取的。如果字符的数量小于 size,则会读取剩余所有的字符。如果已经读取到文件的末尾,则会返回空串。

file_name = "text.txt"try:with open(file_name,encoding="utf-8") as file_object:# 定义一个变量指定每次读取的大小size = 8# 创建一个循环读取文件内容while True:content = file_object.read(size)if not content:# 内容读取完毕,退出循环break# 向文件中写入内容:print(content,end='')print()
except FileNotFoundError:print(f"{file_name}不存在!")

  如果我们在 open() 函数以二进制的模式读写文件时,不能指定编码 encoding 参数,否则会报错。

file_name = "text.txt"try:with open(file_name,mode="rb") as file_object:# 向文件中写入内容:content = file_object.read()print(content.decode("utf-8"))
except FileNotFoundError:print(f"{file_name}不存在!")

  使用 read() 方法读取文件时,是从文件的开头开始的。如果想要读取部分内容,可以先使用文件对象的 seek() 方法将文件的指针移动到新位置,然后再应用 read() 方法读取。

3.2.1、读取一行

  Python 中还提供了 readline() 方法用于每次读取一行数据。

file_object.readline()		# 读取一行
file_name = "text.txt"try:with open(file_name,encoding="utf-8") as file_object:while True:content = file_object.readline()if not content:breakprint(content,end='')print()
except FileNotFoundError:print(f"{file_name}不存在!")

3.2.2、读取全部行

  Python 中还提供 readlines() 方法用于读取全部行。该方法返回的是一个字符串列表,每个元素为文件的一行内容。

file_object.readlines()		# 读取全部行,结果保存在列表中
file_name = "text.txt"try:with open(file_name,encoding="utf-8") as file_object:list = file_object.readlines()for item in list:print(item,end='')print()
except FileNotFoundError:print(f"{file_name}不存在!")

四、文件的定位

  我们可以用 seek() 函数修改文件指针的位置。

file_object.seek(offset[,whence])		# 用来修改当前读取的位置
  • offsets:在文本模式下用于指定字节的个数,其具体位置与 whence 有关;
  • whence:用于指定从什么位置开始计算。值为 0 表示从头开始计算,值 1 表示当前位置开始计算,值 2 表示从文件尾开始计算。默认值为 0;

如果参照物是文件末尾位置,应该倒着移动;

只有 whence=0 可以在文本模式下使用;

  我们还可以使用 tell() 函数查看当前读取的位置。

file_object.tell()		# 用来查看当前读取的位置
file_name = "text.txt"try:with open(file_name,encoding="utf-8") as file_object:file.seek(30)print(file_object.tell())content = file_object.readline()print(content)
except FileNotFoundError:print(f"{file_name}不存在!")

五、目录与文件其它操作

  目录也称文件夹,用于分层保存文件。通过目录可以分别识别地存放文件。我们可以通过目录快速找到想要的文件。在 Python 中,并没有提供直接操作目录的函数或者对象,而是需要使用内置的 os 和 os.path 模块实现。

  os 模块提供与目录相关的函数:

os.getcwd()                             # 返回当前工作目录
os.listdir(path)                        # 返回指定目录下的文件和目录信息
os.mkdir(path[,mode])                   # 创建目录
os.makedirs(path1/path2...[,mode])      # 创建多级目录
os.rmdir(path)                          # 删除目录
os.removedirs(path1/path2...)           # 删除多级目录
os.chdir(path)                          # 把path设置为当前工作目录
os.walk(top[,topdown[,onerror]])        # 遍历目录,返回一个元组,包括所有路径名、所有目录列表和文件列表3个元素

  os.path 模块提供的与目录相关的函数:

os.path.abspath(path)           # 用于获取文件或目录的绝对路径
os.path.exists(path)            # 用于判断目录或者文件是否存在,如果存在则返回True,否则返回False
os.path.join(path,name)         # 将目录与目录或者文件名拼接起来
os.path.splitext()              # 分离文件名和扩展名
os.path.basename(path)          # 从一个目录中提取文件名
os.path.dirname(path)           # 从一个路径中提取文件路径,不包含文件名
os.path.isdir(path)             # 用于判断是否为有效路径
os.path.getsize(path)           # 获取文件或文件夹的大小,单位为字节

  os 模块提供的与文件相关的函数:

os.access(path,accessmode)          # 获取对文件是否有指定访问权限
os.chmod(path,mode)                 # 修改path指定文件的访问权限
os.remove(paht)                     # 删除path指定的文件路径
os.rename(src,dst)                  # 将文件或目录src重名为dst
os.stat(path)                       # 返回path指定文件的信息
os.startfile(path[,operation])      # 使用关联的应用程序打开path指定的文件
import ospath = os.path.join("db","demo","xxx.txt")      # 路径的拼接
print(f"文件的路径:{path}")parent_directory = os.path.dirname(path)        # 获取上级目录
print(f"文件的父目录:{parent_directory}")is_exist = os.path.exists(parent_directory)
if not is_exist:os.makedirs(parent_directory)               # 创建文件夹absolute_path = os.path.abspath(path)           # 获取绝对路径
print(f"文件的绝对路径:{absolute_path}")with open(absolute_path,mode="w",encoding="utf-8") as f:f.write("落霞与孤鹜齐飞,秋水共长天一色。")grand_parent = os.path.dirname(parent_directory) 
print(f"祖父文件夹:{grand_parent}")file_list = os.listdir(grand_parent)            # 查看目录下的文件或一级文件夹
print(f"祖父文件夹下的文件和一级目录:{file_list}")file_generate = os.walk(grand_parent)           # 查看目录下的所有文件,返回的是一个生成器
for base_dir,folder_list,file_list in file_generate:print(f"base_dir = {base_dir}, folder_list = {folder_list}, file_list = {file_list}")for name in file_list:file_path = os.path.join(base_dir,name)print(f"祖父文件夹下的文件和目录:{file_path}")os.remove(absolute_path)                        # 删除文件

相关文章:

15. 文件操作

一、什么是文件 文件(file)通常是磁盘或固态硬盘上的一段已命名的存储区。它是指一组相关数据的有序集合。这个数据集合有一个名称,叫做文件名。文件名 是文件的唯一标识,以便用户识别和引用。文件名包括 3 个部分:文件…...

清风数学建模学习笔记——Topsis法

数模评价类(2)——Topsis法 概述 Topsis:Technique for Order Preference by Similarity to Ideal Solution 也称优劣解距离法,该方法的基本思想是,通过计算每个备选方案与理想解和负理想解之间的距离,从而评估每个…...

组合总和习题分析

习题:(leetcode39) 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 c…...

基于eFramework车控车设中间件介绍

车设的发展,起源于汽车工业萌芽之初,经历了机械式操作的原始粗犷,到电子式调控技术的巨大飞跃,到如今智能化座舱普及,远程车控已然成为汽车标配,车设功能选项也呈现出爆发式增长,渐趋多元繁杂。…...

L17.【LeetCode笔记】另一棵树的子树

目录 1.题目 代码模板 2.分析 3.代码 4.提交结果 1.题目 https://leetcode.cn/problems/subtree-of-another-tree/description/ 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true &#xff…...

BGP通过route-policy路由策略调用ip-prefix网络前缀实现负载均衡与可靠性之AS-path属性

一、实验场景 1、loopback0与loopback1模拟企业实际环境中的某个网段。 2、本例目标总公司AR3的1.1.1.1/32网段到分公司AR4的3.3.3.3/32的流量从上方的AS500自治系统走。 3、本例目标总公司AR3的4.4.4.4/32网段到分公司AR4的2.2.2.2/32的流量从下面的AS300、AS400自治系统走。…...

每日速记10道java面试题14-MySQL篇

其他资料 每日速记10道java面试题01-CSDN博客 每日速记10道java面试题02-CSDN博客 每日速记10道java面试题03-CSDN博客 每日速记10道java面试题04-CSDN博客 每日速记10道java面试题05-CSDN博客 每日速记10道java面试题06-CSDN博客 每日速记10道java面试题07-CSDN博客 每…...

内存图及其画法

所有的文件都存在硬盘上,首次使用的时候才会进入内存 进程:有自己的Main方法,并且依赖自己Main运行起来的程序。独占一块内存区域,互不干扰。内存中有一个一个的进程。 操作系统只认识c语言。操作系统调度驱动管理硬件&#xff0…...

Ansys Maxwell:Qi 无线充电组件

Qi 无线充电采用感应充电技术,无需物理连接器或电缆,即可将电力从充电站传输到兼容设备。由 WPC 管理的 Qi 标准确保了不同无线充电产品之间的互操作性。以下是 Qi v1.3 标准的核心功能: Qi v1.3 标准的主要特点 身份验证:确保充…...

【Shell 脚本实现 HTTP 请求的接收、解析、处理逻辑】

以下是一个实现客户端对 Shell HTTP 服务发起 POST 请求并传入 JSON 参数的完整示例。Shell 服务会解析收到的 JSON 数据,根据内容执行操作。 服务端脚本:http_server.sh 以下脚本使用 netcat (nc) 来监听 HTTP 请求,并通过 jq 工具解析 JSO…...

【北京迅为】iTOP-4412全能版使用手册-第六十七章 USB鼠标驱动详解

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...

【青牛科技】拥有两个独立的、高增益、内部相位补偿的双运算放大器,可适用于单电源或双电源工作——D4558

概述: D4558内部包括有两个独立的、高增益、内部相位补偿的双运算放大器,可适用于单电源或双电源工作。该电路具有电压增益高、噪声低等特点。主要应用于音频信号放大,有源滤波器等场合。 D4558采用DIP8、SOP8的封装形式 主要特点&#xff…...

Kafka 数据写入问题

目录标题 分析思路1. **生产者配置问题**:Kafka生产者的配置参数生产者和消费者的处理确定并优化 2. **网络问题**:3. **Kafka 集群配置问题**:unclean.leader.election.enable 4. **Zookeeper 配置问题**:5. **JVM 参数调优**&am…...

实战ansible-playbook(九)-profile配置- 确保 CUDA 和 MPI 环境变量正确设置并立即生效

Playbook 分析 --- - name: 确保 CUDA 和 MPI 环境变量正确设置并立即生效hosts: pod2 # 指定目标主机组或具体主机名become: yes # 使用特权提升(sudo),以root权限执行某些需要权限的任务remote_user: canopy # 远程连接使用的用户名vars: # 定义全局变量,用于Playbo…...

气膜馆:科技与环保融合的未来建筑新选择—轻空间

在全球城市化进程不断加快的背景下,传统建筑方式面临着越来越多的挑战。如何在有限的土地和资源条件下,快速、高效、环保地搭建符合多功能需求的建筑,成为现代建筑行业亟待解决的重要课题。而随着科技的进步与建筑材料的创新,一种…...

git回退到某个版本git checkout和git reset命令的区别

文章目录 1. git checkout <commit>2. git reset --hard <commit>两者的区别总结推荐使用场景* 在使用 Git 回退到某个版本时&#xff0c; git checkout <commit> 和 git reset --hard <commit> 是两种常见的方式&#xff0c;但它们的用途和影响有很…...

Preprocess

Preprocess数据预处理 文本 使用Tokenizer将文本转换为标记序列&#xff0c;创建标记的数值表示&#xff0c;并将它们组装成张量。 预处理文本数据的主要工具是标记器。标记器根据一组规则将文本拆分为标记。标记被转换为数字&#xff0c;然后转换为张量&#xff0c;这些张量…...

stm32 spi接口传输asm330l速率优化(及cpu和dma方式对比)

最近一段时间做了一个mems的项目&#xff0c;项目的方案是stm32g071做主控&#xff0c;读写3颗asm330l的硬件形态。最初是想放置4颗imu芯片&#xff0c;因为pcb空间布局的问题&#xff0c;改放了3颗。但对于软件方案来说无所谓&#xff0c;关键是如何优化spi的传输速率&#xf…...

数字时代的文化宝库:存储技术与精神生活

文章目录 1. 文学经典的数字传承2. 音乐的无限可能3. 影视艺术的数字化存储4. 结语 数字时代的文化宝库&#xff1a;存储技术与精神生活 在数字化的浪潮中&#xff0c;存储技术如同一座桥梁&#xff0c;连接着过去与未来&#xff0c;承载着人类文明的瑰宝。随着存储容量的不断增…...

flex: 1 display:flex 导致的宽度失效问题

flex: 1 & display:flex 导致的宽度失效问题 问题复现 有这样的一个业务场景&#xff0c;详情项每行三项分别占33%宽度&#xff0c;每项有label字数不固定所以宽度不固定&#xff0c;还有content 占满标签剩余宽度&#xff0c;文字过多显示省略号&#xff0c; 鼠标划入展示…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...

医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor

1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...