第11章 1 文件及IO操作
文章目录
- 文件的概述及基本操作步骤 p151
- 文件的写入操作 p152
- 文件的读取操作及文件复制 p153
- 文件的读取操作
- 文件复制
- with语句的使用 p154
- 一维数据和二维数据的存储与读取 p155
- 高维数据的存储和读取 p156
- os模块中的常用的函数 p157
- os.path模块中常用的函数 p158
文件的概述及基本操作步骤 p151
什么是文件?
存储在计算机的存储设备中的一组数据序列就是文件
不同类型的文件通过后缀名进行区分
文本文件:编码格式不同,所占磁盘空间的字节数不同(比如北京你好
,用gbk编码是8个字节,utf-8则需要编码为12个字节)
二进制文件:没有统一的编码,文件直接由0或1组成,需要指定的软件才能打开
Python操作文件的步骤:
1、打开文件
变量名=open(filename,mode,encoding)filename:要打开文件的完整路径
mode:文件的打开模式:读还是写...
encoding:文件的编码格式若要打开的文件不存在,则会在磁盘上创建文件
2、操作文件
变量名.read()
变量名.write(s)
3、关闭文件
变量名.close()
代码实例:
def my_write():# 1file=open('a.txt','w',encoding='utf-8') # 若欲打开文件和当前代码文件在同一目录,直接写欲打开文件名就行;以utf-8的格式编码# 2file.write('伟大的中国梦')# 3file.close()def my_read():# 1file=open('a.txt', 'r', encoding='utf-8')# 2s=file.read()# 3file.close()print(s)# 主程序运行(似乎就是只有在当前文件中运行Python才会执行的分支)
if __name__=='__main__':my_write()my_read()
# 重复运行这个代码,新产生的文件内容里面也只有一个'伟大的中国梦'
文件的写入操作 p152
文件未被打开时:(磁盘)存储状态
文件被打开后:(内存)占用状态
文件的打开模式 | 模式说明 |
---|---|
r | 以只读模式打开,文件指针在文件的开头;若文件不存在,程序抛异常 |
rb | 以只读模式打开二进制文件,如图片文件 |
w | 覆盖写模式,文件不存在就创建,文件存在则内容覆盖 |
wb | 覆盖写模式写入二进制数据,文件不存在就创建,文件存在就覆盖 |
a | 追加写模式,文件不存在则创建;文件存在则在文件末尾追加内容 |
+ | 与 w/r/a 等一同使用,在原功能的基础上增加 同时读写功能 |
读写方法 | 描述说明 |
---|---|
file.read(size) | 从文件中读取size字节/字符,若没有给定参数,则读取文件全部内容 |
file.readline(size) | 读取文件中的一行数据,若给定参数,则为读取这一行中的size字节/字符 |
file.readlines() | 从文件中读取所有内容,结果为列表类型 |
file.write(s) | 将字符串s写入文件 |
file.writelines(lst) | 将内容全部为字符串的列表lst写入文件(若有整数、浮点数则写不进去) |
file.seek(ooffset) | 改变当前文件操作指针的位置,英文占一个字节,中文gbk编码占两个字节,utf-8编码占三个字节 |
代码实例:
def my_write(s):file=open('b.txt','a',encoding='utf-8')file.write(s)file.write('\n')file.close()# 将列表中的内容写入文件
def my_write_lst(lst):file=open('b.txt','a',encoding='UTF-8')file.writelines(lst)file.close()if __name__=='__main__':my_write('伟大的中国梦')my_write('北京欢迎您')lst=['姓名\t','年龄\t','成绩\n','张三\t','30\t','98\n']my_write_lst(lst)
文件的读取操作及文件复制 p153
文件的读取操作
def my_read(filename):file=open(filename,'w+',encoding='UTF-8')file.write('你好啊') # 写完成后,文件的指针在最后# seek修改文件指针的位置file.seek(0) # 文件指针偏移设置为0,最开始的地方# s=file.read() # read()不指定参数就是读取文件全部内容;# s=file.read(2) # 读取两个字符(不是字节),你好# s=file.readline() # 读取一行的数据# s=file.readline(2) # 读取一行中的两个字符s=file.readlines() # 读取所有,一行为列表中的一个元素,s是列表类型print(type(s))print(s)if __name__=='__main__':my_read('d.txt')
文件复制
def copy(src,dst):# 文件的复制就是边读边写操作file_src=open(src,'rb')file_dst=open(dst,'wb')s=file_src.read() # 源文件读取所有file_dst.write(s) # 目的文件写入所有# 先打开的后关,后打开的先关file_dst.close()file_src.close()if __name__=='__main__':src='./图片.png' # . 代表当前目录dst='../test.png'copy(src,dst)print('文件复制完成')
with语句的使用 p154
with语句又称为上下文管理器,在处理文件时,无论是否产生异常,都能保证with语句执行完毕后关闭已经打开的文件,这个过程是自动的,无需手动操作
语法结构:
with open(...) as file:pass
代码实例:
def write_fun():with open('aa.txt','w',encoding='UTF-8') as file:file.write('2022年北京冬奥会欢迎您')def read_fun():with open('aa.txt','r',encoding='UTF-8') as file:print(file.read())def copy_fun(src_file,dst_file):with open(src_file,'r',encoding='UTF-8') as file_src:with open(dst_file,'w',encoding='UTF-8') as file_dst:file_dst.write(file_src.read())if __name__=='__main__':write_fun()read_fun()copy_fun('./aa.txt','./bb.txt')
一维数据和二维数据的存储与读取 p155
数据的组织维度:
也称为(数据的组织方式或存储方式),在Pytho中常用的数据组织方式可以分为一维数据、二维数据和高维数据
一维数据:通常采用线性方式组织数据,一般使用Python中的列表、元组或集合进行存储数据(不能使用字典)
二维数据:二维数据也称为表格数据,由行和列组成,类似于Excel表格,在Python中使用二维列表进行存储
高维数据:高维数据则是使用key-value方式进行组织数据,在Python中使用字典进行存储数据。在Python中内置的json模块专门用于处理JSON(JavaScript Object Notation)格式的数据
代码实例:
# 存储和读取一维数组
def my_write():# 一维数据,可以使用列表,元组,或集合lst=['张三','李四','王五','陈六','麻七']with open('student.csv','w',encoding='UTF-8') as file: # 没写编码格式,采用默认 GBK编码 会是乱码file.write(','.join(lst)) # 列表转成字符串的操作def my_read():with open('student.csv','r',encoding='UTF-8') as file:s=file.read()lst=s.split(',') # 劈分print(lst)# 存储和读取二维数据(表格数据)
def my_write_table():lst=[['商品名称','单价','采购数量'],['水杯','98.5','20'],['鼠标', '89', '100'],]with open('table.csv','w',encoding='UTF-8') as file: # 虽然此处用了w但不是覆盖写,怀疑和with open打开方式有关,但是多次运行也不会往table.csv中重复写for item in lst:file.write(','.join(item))file.write('\n')def my_read_table():data=[]with open('table.csv','r',encoding='UTF-8') as file:lst=file.readlines() # 每一行就是列表中的一个元素for item in lst:new_lst=item[:len(item)-1].split(',')data.append(new_lst)print(data)if __name__=='__main__':my_write()my_read()my_write_table()my_read_table()
高维数据的存储和读取 p156
json模块的常用函数
函数名称 | 描述说明 |
---|---|
json.dumps(obj) | 将Python数据类型转成JSON格式过程,编码过程 |
json.loads(s) | 将JSON格式字符串转成Python数据类型,解码过程 |
json.dump(obj,file) | 与dumps()功能相同,将转换结果存储到文件file中 |
json.load(file) | 与loads()功能相同,从文件file中读入数据 |
代码实例:
import json# 准备高维数据
lst= [{'name':'tom','age':18,'score':100},{'name':'jack','age':19,'score':90},{'name':'lucy','age':17,'score':80}
] # 若最外层变为元组边界,loads解码后依然变成列表边界# dumps 编码:list-->str
s=json.dumps(lst,ensure_ascii=False,indent=4) # ensure_ascii=False为了正常显示中文,indent=4增加数据的缩进美观。使json格式的字符串更具有可读性
print(type(s)) # 编码:list-->str
print(s)print('-'*66)# loads 解码:str-->list
lst2=json.loads(s)
print(type(lst2))
print(lst2)print('-'*66)# 编码到文件中
with open('studeng.txt','w',encoding='UTF-8') as file:json.dump(lst,file,ensure_ascii=False,indent=4) # ensure_ascii=False,indent=4 也要加上确保可读性print('-'*66)# 解码到程序中
with open('studeng.txt','r',encoding='UTF-8') as file:lst3=json.load(file)
print(lst3)
os模块中的常用的函数 p157
os使Python内置的与操作系统文件相关的模块,该模块中语句的执行结果通常和操作系统有关,即有些函数的运行效果在Windows操作系统和Macos操作系统中不一样
目录与文件的相关操作
函数名称 | 描述说明 |
---|---|
getcwd() | 获取当前的工作路径 |
listdir(path) | 获取path路径下的文件和目录信息 ,若没有指定path,则获取当前路径下的文件和目录信息 |
mkdir(path) | 在指定路径下创建目录(文件夹) |
makedirs(path) | 创建多级目录 |
rmdir(path) | 删除path下的空目录(目录下面有内容的删不了) |
removedirs(path) | 删除多级目录 |
chdir(path) | 把path设置为当前目录 |
walk(path) | 遍历目录树,结果为元组,包含所有路径名,所有目录列表和文件列表 |
remove(path) | 删除path指定的文件 |
rename(old,new) | 将old重命名为new |
stat(path) | 获取path指定的文件信息 |
startfile(path) | 启动path指定的文件 |
代码实例:
import osprint('当前的工作路径:',os.getcwd())print('-'*66)lst=os.listdir()
print('当面路径下的所有目录和文件:',lst)print('指定路径下的所有目录和文件:',os.listdir('../'))print('-'*66)# 创建单极目录
# os.mkdir('好好学习') # 若此目录已经存在,则无法创建并且程序报错
# os.mkdir('mm')
# 创建单极目录
# os.makedirs('./好好学习/aa/bb/cc') # 若最下级目录cc已经存在,则无法创建并且程序报错print('-'*66)# 删除目录(只能是空目录)
# os.rmdir('./mm') # 若目录非空或者不存在,那么此处会报错
# 删除多级目录
# os.removedirs('./好好学习/aa/bb/cc') # 同样要求目录是空的,和目录存在print('-'*66)# 改变当前的工作路径
print('当前的工作路径:',os.getcwd())
os.chdir('D:\pycharm_projects')
print('修改工作目录后当前的工作路径:',os.getcwd()) # 修改了程序运行的路径,程序的路径没变
os.chdir(r'D:\pycharm_projects\pythonProject\venv\chap_10') # 注意此处 `\v`成了转义字符,所以搞成\\v ; 也可以在整个字串外面加个 ‘r' 或者 ’R'
print('恢复,当前的工作路径:',os.getcwd())print('-'*66)# 遍历目录树 打印太多注释掉
'''
for dirs,dirlist,filelist in os.walk('D:\pycharm_projects\pythonProject\\venv'):print(dirs) # 当前遍历到的目录 Xprint(dirlist) # X下的目录print(filelist) # X下的文件print('*****')
'''print('-'*66)# 删除文件
# os.remove('./a.txt') # 若文件不存在会报错 FileNotFoundError
# 重命名操作(操作对象可以是文件也可以使目录)
# os.rename('aa.txt','aa_new.txt') # 重命名文件
# os.rename('112','113') # 重命名目录print('-'*66)# 转换时间格式
import timedef date_foramt(longtime): # 入参是时间戳s=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(longtime))return s# 获取文件信息
info=os.stat('./aa_new.txt')
print(type(info)) # <class 'os.stat_result'>
print(info)print('最近一次访问时间:',date_foramt(info.st_atime))
print('在windows操作系统中显示的文件创建时间:',date_foramt(info.st_ctime))
print('最后一次修改时间:',date_foramt(info.st_mtime))
print('文件的大小(单位是字节):',info.st_size)print('-'*66)# 启动路径下的文件
os.startfile('calc.exe') # 打开计算器
os.startfile(r'C:\Users\j30022395\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python 3.8\Python 3.8 (64-bit)') # 打开Python解释器
os.path模块中常用的函数 p158
os.path
模块是os模块中的子模块,也提供了一些目录和文件的操作函数
函数名称 | 描述说明 |
---|---|
abspath(path) | 获取目录或文件的绝对路径(从盘符开始) |
exists(path) | 判断目录或文件在磁盘上是否存在,结果为bool类型,若目录或文件在磁盘上存在,结果为True ,否则为False |
join(path,name) | 将目录与目录名或文件名进行拼接,相当于字符串的+ 操作 |
splitext() | 分别获取文件名和后缀名 |
basename(path) | 从path 中提取文件名 |
dirname(path) | 从path 中提取路径(不包含文件名) |
isdir(path) | 判断path 是否是有效路径 |
isfile(path) | 判断path 是否是有效文件 |
import os.pathprint('获取目录或者文件的绝对路径:',os.path.abspath('./note.txt')) # 实际不存在
print('判断目录或文件在磁盘上是否存在:',os.path.exists('note.txt')) # False 当前路径下不存在这个文件
print('判断目录或文件在磁盘上是否存在:',os.path.exists('1.txt')) # True 当前路径下存在这个文件
print('拼接路径:',os.path.join(r'E:\1_python\PyCharmProjects\chap3','note.txt'))
print('分割/分别获取 文件名和文件后缀名:',os.path.splitext('b.txt')) # 要切除的文件不一定要在当前目录下存在
print('提取文件名:',os.path.basename(r'E:\1_python\PyCharmProjects\chap3\note.txt'))
print('提取文件名:',os.path.basename(r'E:\1_python\PyCharmProjects\chap3\note_1.txt')) # 文件实际不存在也能提取文件名
print('提取路径:',os.path.dirname(r'E:\1_python\PyCharmProjects\chap3\note.txt'))
print('提取路径:',os.path.dirname(r'E:\1_python\PyCharmProjects\chap3_1\note.txt')) # 路径实际不存在也能提取
print('判断一个路径是否是有效路径:',os.path.isdir(r'E:\1_python\PyCharmProjects\chap3\note_1.txt')) # 文件不存在False
print('判断一个路径是否是有效路径:',os.path.isdir(r'E:\1_python\PyCharmProjects\chap3\note.txt')) # 文件存在也是False
print('判断一个路径是否是有效路径:',os.path.isdir(r'E:\1_python\PyCharmProjects\chap3'))print('判断一个路径是否是有效文件:',os.path.isfile(r'E:\1_python\PyCharmProjects\chap3\1.txt'))
相关文章:

第11章 1 文件及IO操作
文章目录 文件的概述及基本操作步骤 p151文件的写入操作 p152文件的读取操作及文件复制 p153文件的读取操作文件复制 with语句的使用 p154一维数据和二维数据的存储与读取 p155高维数据的存储和读取 p156os模块中的常用的函数 p157os.path模块中常用的函数 p158 文件的概述及基…...

Tomcat服务实例部署
目录 **Tomcat 由一系列的组件构成,其中核心的组件有三个:** 什么是 servlet? 什么是 JSP? Tomcat 功能组件结构: Container 结构分析: Tomcat 请求过程: ## Tomcat 服务部署 1.关闭防火墙…...

高精度彩色3D相机:开启崭新的彩色3D成像时代
3D成像的新时代 近年来,机器人技术的快速发展促使对3D相机技术的需求不断增加,原因在于,相机在提高机器人的性能和实现多种功能方面发挥了决定性作用。然而,其中许多应用所需的解决方案更复杂,仅提供环境的深度信息是…...

借助Gitee将typora图片上传CSDN
概述 前面已经发了一个如何借助Github将typora上的图片上传到csdn上,但这有个缺陷:需要科学上网才能加速查看已经上传到github上的图片,否则就会出现已经上传的图片,无法正常查看的问题 如何解决? 那就可以使用Gite…...

几件奇怪的事产生的疑团
1.记得当年在中国科技大学杨照华给我们上初等数论课(杨是北大毕业,闵嗣鹤教授的关门弟子,后来到华南师大任教),他说过“据华老(华罗庚)讲,希尔伯特最先解决华林问题的论文中用到二十…...

陶瓷碗口缺口检测-图像增强
图像增强 在采集图像的过程中,可能会有由于采集图像环境中光源照射不足,导致采集的图像对比度不足,图像视觉效果较暗的情况,可以通过直方图均衡化或者直方图规定化。如图a为原图像对比度低,图c为其直方图,…...

gitee创建远程仓库并克隆远程仓库到电脑
1、首先点加号新建一个仓库 2、输入仓库名,路径会自动填充,填写简单的仓库介绍,先选择私有,在仓库创建之后,可以改为开源 3、打开建好的仓库 4、复制仓库链接 5、打开一个文件夹(想要存储远程仓库的地址),在…...

3D人体姿态估计(教程+代码)
3D人体姿态估计是指通过计算机视觉和深度学习技术,从图像或视频中推断出人体的三维姿态信息。它是计算机视觉领域的一个重要研究方向,具有广泛的应用潜力,如人机交互、运动分析、虚拟现实、增强现实等。 传统的2D人体姿态估计方法主要关注通…...

Python异步编程|PySimpleGUI界面读取PDF转换Excel
目录 实例要求 原始pdf文件格式 输出xls文件格式 运行界面 完整代码 代码分析 遍历表格 布局界面 控件简介 写入表格 表格排序 事件循环 异步编程 实例要求 使用PySimpleGUI做一个把单位考勤系统导出的pdf文件合并输出Excel的应用,故事出自࿱…...

制造领域 基础概念快速入门介绍
1、基本背景知识 本定义结合国家标准文件有所发挥,仅供参考。 产品:是生产企业向用户或市场以商品形式提供的制成品; 成套设备:在生产企业一般不用装配工序连接,但用于完成相互联系的使用功能的两个或两个以上的产…...

小程序的完整开发流程?
小程序的完整开发流程可以分为以下几个步骤: 需求分析和设计:明确小程序的功能需求和设计思路,包括页面结构、交互逻辑等。 环境搭建:安装并配置开发工具,如微信开发者工具或其他小程序开发工具。 项目初始化&#x…...

【LV13 DAY16 轮询与中断】
轮询实现按键实验 #include "exynos_4412.h"int main() {//GPX1_1设置为输入模式//GPX1.CONGPX1.CON & (~ (0XF<<4));while(1){if(!(GPX1.DAT&(1<<1))){printf("key pressed\n");while(!(GPX1.DAT&(1<<1)));}else{}}return…...

Swoft - Bean
一、Bean 在 Swoft 中,一个 Bean 就是一个类的一个对象实例。 它(Bean)是通过容器来存放和管理整个生命周期的。 最直观的感受就是省去了频繁new的过程,节省了资源的开销。 二、Bean的使用 1、创建Bean 在【gateway/app/Http/Controller】下新建一个名为…...

【产品人卫朋】硬件产品经理:从入门到精通
目录 本文目录 1. 前言说明 2. 内容说明 3. 资料包说明 作者简介 本文目录 1. 前言说明 2. 内容说明 3. 资料包说明 1. 前言说明 本篇内容节选自实体书《硬件产品经理:从入门到精通》。 2. 内容说明 鉴于硬件产品的特殊性,不同产品阶段的时间间…...

swing快速入门(四十)JList、JComboBox实现列表框
注释很详细,直接上代码 上一篇 新增内容 🧧1.列表的属性设置与选项监听器 🧧2.下拉框的属性设置与选项监听器 🧧3.Box中组件填充情况不符合预期的处理方法 🧧4.LIst向Vector的转化方法 源码: package swing…...

React Native 原生组件回调JS层方法和 JS 层调用原生组件的事件方法
一、原生组件回调 JS 层提供的事件方法 比如 TextInput 组件 onChangeText 属性,输入事件是发生在原生层的但是需要通知 JS 层发生了变化,并执行 JS 层的方法。 1、给原生组件添加一个按钮用于触发原生事件方法 在 XML 中添加一个按钮 为了方便让 Inf…...

Go-安装与基础语法
TOC 1. Go 安装与环境变量 1.1 下载 需要从Go语言的官方网站下载适合你操作系统的Go语言安装包。Go语言支持多种操作系统,包括Windows、Linux和Mac OS。 对于Windows用户,下载.msi文件,然后双击该文件,按照提示进行安装即可。…...

【同济子豪兄斯坦福CS224W中文精讲】NetworkX代码学习笔记
文章目录 安装配置创建图可视化图图数据挖掘参考资料 安装配置 matplotlib中文字体设置 import networkx as nx import matplotlib.pyplot as plt # 魔法指令,设置后在jupyter notebook中绘制的图形会显示在输出单元格中,而不是弹出一个新窗口 %matplo…...

java+ssm+vue代码视频学习讲解
一、ssm 1.项目文件结构 2.数据库连接信息 3.其他配置信息 4.java代码文件目录介绍 5.entity层代码 6.controller,service,dao,entity层之间的关系 7.controller层代码 8.登陆拦截功能实现 AuthorizationInterceptor.java 9.文件上传功能 …...

[计算机提升] 创建FTP共享
4.7 创建FTP共享 4.7.1 FTP介绍 在Windows系统中,FTP共享是一种用于在网络上进行文件传输的标准协议。它可以让用户通过FTP客户端程序访问并下载或上传文件,实现文件共享。 FTP共享的用途非常广泛,例如可以让多个用户共享文件、进行文件备份…...

R语言将list转变为dataframe(常用)
在R语言使用中常常遇到list文件需要转变为dataframe格式文件处理。这是需要写循环来进行转换。IOBR查看其收录的相关基因集(自备)_iobr_deg-CSDN博客 示例文件 list文件: 循环转换为dataframe data <- signature_tme dat <- as.data.frame(t(sapply(data, …...

【JAVA】OPENGL+TIFF格式图片,不同阈值旋转效果
有些科学研究领域会用到一些TIFF格式图片,由于是多张图片相互渐变,看起来比较有意思: import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.*;/*** 可以自已定义日志打印格式…...

Linux系统中使用ln命令创建软连接
大家应该和我一样,第一次听到软连接这个词时感觉好高级啊,但其实也就那么回事,你完全可以将他类比为Windows系统中的快捷方式。 链接只是一个指向,并不是物理移动,类似Windows系统的快捷方式 1.功能和语法 功能&…...

Spark---RDD(Key-Value类型转换算子)
文章目录 1.RDD Key-Value类型1.1 partitionBy1.2 reduceByKey1.3 groupByKeyreduceByKey和groupByKey的区别分区间和分区内 1.4 aggregateByKey获取相同key的value的平均值 1.5 foldByKey1.6 combineByKey1.7 sortByKey1.8 join1.9 leftOuterJoin1.10 cogroup 1.RDD Key-Value…...

后台代码New出来DataGridTextColumn 动态添加到DataGrain 设置 Margin属性
在 WPF 中给 DataGridTextColumn 设置 MarginProperty 可以通过自定义 DataGridTemplateColumn 来实现。以下是一个示例代码: <DataGrid><DataGrid.Columns><DataGridTemplateColumn><DataGridTemplateColumn.CellTemplate><DataTempla…...

MySQL面试题(下)
09)查询学过「张三」老师授课的同学的信息 SELECTs.*,c.cname,t.tnameFROMt_mysql_teacher t,t_mysql_student s,t_mysql_course c,t_mysql_score scWHEREt.tidc.tid and c.cidsc.cid and sc.sids.sid and tname 张三 10)查询没有学全所有课程的同学的…...

【Linux】如何检查Linux用户是否具有sudo权限
问题背景或前提知识 在Linux系统中,sudo(superuser do)是一个重要的命令,它允许普通用户以系统管理员的身份执行命令。了解用户是否拥有sudo权限对于系统管理和安全性来说是非常重要的。 技术名词解释 sudo:一种程序…...

2024.1.13 Kafka六大机制和Structured Streaming
目录 一 . Kafka中生产者数据分发策略 二. Kafka消费者的负载均衡机制 三 . 数据不丢失机制 生产者端是如何保证数据不丢失的呢? Broker端如何保证数据不丢失 消费端如何保证数据不丢失 Kafka中消费者如何对数据仅且只消费一次 四 . 启动Kafka eagle命令 数…...

遥感影像-语义分割数据集:Landsat8云数据集详细介绍及训练样本处理流程
原始数据集详情 简介:该云数据集包括RGB三通道的高分辨率图像,在全球不同区域的分辨率15米。这些图像采集自Lansat8的五种主要土地覆盖类型,即水、植被、湿地、城市、冰雪和贫瘠土地。 KeyValue卫星类型landsat8覆盖区域未知场景水、植被、…...

YOLOV8在coco128上的训练
coco128是coco数据集的子集只有128张图片 训练代码main.py from ultralytics import YOLO# Load a model model YOLO("yolov8n.yaml") # build a new model from scratch model YOLO("yolov8n.pt") # load a pretrained model (recommended for trai…...