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

Python文件操作(五分钟小白从入门到精通)

文件的编码

学习目标:

掌握文件编码的概念和常见编码

思考:计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢? 答案:使用编码技术(密码本)将内容翻译成0和1存入。

编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。
我                                               1011
喜                                               1101
欢                                               1111
你                                               1001

计算机中有许多可用编码:
UTF-8
GBK
Big5

不同的编码,将内容翻译成二进制也是不同的。

编码有许多,所以要使用正确的编码, 才能对文件进行正确的读写操作呢。 如上,如果你给喜欢的女孩发送文件,使用编码A进行编码(内容转二进制)。 女孩使用编码B打开文件进行解码(二进制反转回内容) 自求多福吧。

们可以使用Windows系统自带的记事本,打开文件后,即可看出文件的编码是什么:

UTF-8是目前全球通用的编码格式 除非有特殊需求,否则,一律以UTF-8格式进行文件编码即可。

总结:

1. 什么是编码?
编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。
编码有许多中,我们最常用的是UTF-8编码
2. 为什么需要使用编码?
计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中。
同时也需要编码, 将计算机保存的0和1,反向翻译回可以识别的内容

文件的读取

了解文件操作的作用 掌握文件的打开、读取、关闭操作

内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。 一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别。

文件操作包含哪些内容呢?

在日常生活中,文件操作主要包括打开、关闭、读、写等操作。

想想我们平常对文件的基本操作,大概可以分为三个步骤(简称文件操作三步走):
① 打开文件
② 读写文件
③ 关闭文件
注意:可以只打开和关闭文件,不进行任何读写

在Python中可以使用chr()函数和ord()函数来实现数字与单个字符间的相互转换。
chr() 函数
chr()函数的使用形式如下:
r(i)
功能:返回数字i对应的Unicode字符。
参数i:可以是二进制、十进制和十六进制的数值,在转换时都会自动转换为二进制的数值。示例代码:
print (chr(35),chz(0x23),chr(0b0010001二进制数值使用0b开头,十进制数值与通常写法相同。本处演在Python中十六进制数值默认使用0x开头二进制可忽略,关键在于理解编码的转换。示的是编码的转换过程,读者若不熟悉十六进制、
代码执行结果:
###
Unicode编码统一了所有编码方式中字符的数值,使得输出3个#,因为#的ASCII值为代码中的00100011,相同的字符具有相同的二进制数值,因此这里的00100011通过Unicode转换后的字符为一个#。而十进制的35和十六进制的0x23都可转换为二进制为00100011,因此输出结果为3个#。
·ord()函数
ord()函数的使用形式如下:
ord (c)

功能:返回参数c的Uincode数值。
参数c:数据类型为字符串类型且表示单个字符。
示例代码:
print(ord( a
代码中将字符'a'转换为Unicode数值。但由于print()函数会默认输出十进制的数值,因此代码执行结果会显示为二进制数值。
代码执行结果:
97
示例代码(将汉字转换为Unicode编码,将数字转换为Unicode字符):01 print(ord(中'))02 print(chr(20010))
第1行代码将“中”转换为Unicode数值,第2行代码将数字20010转换为Unicode字符,代码执行结果:
20013

open()打开函数

在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下 name:

是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 mode:设置打开文件的模式(访问模式):只读、写入、追加等。 encoding:编码格式(推荐使用UTF-8) 示例代码:

注意:此时的`f`是`open`函数的文件对象,对象是Python中一种特殊的数据类型,拥有属性和方法,可以使用对象.属性或对象.方法对其进行访问,后续面向对象课程会给大家进行详细的介绍。

mode常用的三种基础访问模式 

模式

描述

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

w

打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除

如果该文件不存在,创建新文件

a

打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后

如果该文件不存在,创建新文件进行写入。

读操作相关方法 

read()方法:

num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

readlines()方法:
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

readline()方法:一次读取一行内容 

for循环读取文件行 

close() 关闭文件对象 

with open 语法 

操作汇总

操作

功能

文件对象 = open(file, mode, encoding)

打开文件获得文件对象

文件对象.read(num)

读取指定长度字节

不指定num读取文件全部

文件对象.readline()

读取一行

文件对象.readlines()

读取全部行,得到列表

for line in 文件对象

for循环文件行,一次循环得到一行数据

文件对象.close()

关闭文件对象

with open() as f

通过with open语法打开文件,可以自动关闭

总结:

 1. 操作文件需要通过open函数打开文件得到文件对象
2. 文件对象有如下读取方法:
read()
readline()
readlines()
for line in 文件对象
3. 文件读取完成后,要使用文件对象.close()方法关闭文件对象,否则文件会被一直占用

文件的写入

案例演示:

注意:
直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
当调用flush的时候,内容会真正写入文件
这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)

文件如果不存在,使用”w”模式,会创建新文件 文件如果存在,使用”w”模式,会将原有内容清空

总结:

1. 写入文件使用open函数的”w”模式进行写入
2. 写入的方法有:
wirte(),写入内容
flush(),刷新内容到硬盘中
3. 注意事项:
w模式,文件不存在,会创建新文件
w模式,文件存在,会清空原有内容
close()方法,带有flush()方法的功能

文件的追加

案例演示:

注意:
a模式,文件不存在会创建文件
a模式,文件存在会在最后,追加写入文件

1. 追加写入文件使用open函数的”a”模式进行写入
2. 追加写入的方法有(和w模式一致):
wirte(),写入内容
flush(),刷新内容到硬盘中
3. 注意事项:
a模式,文件不存在,会创建新文件
a模式,文件存在,会在原有内容后面继续写入
可以使用”\n”来写出换行符

2.2 读取文件
读取文件内容前需要确定文件的打开模式是否为只读模式(r'模式),如果是,则可以使用文件对象中ead()、readline()、readlines()方法读取文件内的信息。
read()方法
C
read()方法的使用形式如下:
文件对象.read(size=
功能:从文件中读取内容。
参数size:从文件中读取size个字符的内容,默认读取全部内容。
返回值:读取内容,是字符串类型的。
示例代码(读取文件中的全部内容):
01 f = open(r'E:\书代码\第7章\编程语言概述.txt';= !ú七f-8!)Iriencoding02 print(f.read())03 f.close()
第1行代码以模式打开文件,且设置读取文件的编码方式为UTF-8(大小写均可,有中文时需要设置为
UTF-8),返回文件对象f。
第2行代码对文件对象f使用read()方法,read()方法中无参数,因此会读取文件中的全部内容。

示例代码(读取文件中的前10个字符):
01 £ = open(z'Ē:\书代码\第7章\编程语言概述,txt','r'encoaing=rut2-8r02 a = f.read(10)03 print(a,type(a))04 f.close()
E往是海行相。
件对象?
代码执行结果:由于计算机不能识别人 <class'str'>如果open()中第4个参数没有指定,系统会默认编码方式为GBK编码方式,由于文件“E:\书代码\第7章\编程语言概述.txt”中存在中文字符,而GBK编码方式无法解析中文字符,因此使用read()读取内容时会引发编码错误。
示例代码:
01 王 = open(r'E:\书代码\第7章\编程语言概述,txt!,'rr02 print (f.read())03 f.close()
执行代码后会出现图7-16所示的异常报错,通过红色报错信息的第2行内容可知错误代码在第20行的print(f.read())语句中。报错信息的最后一行内容unicodeDecodeError:'qbk' codec can'tdecodebyte 0xb0 in position 2:11leqal multibvte sequence提示GBK编码器不能解码文件内容。读者在编写代码时,如果遇到UTF-8编码器不能解码文件 Python 3.7.9 shelPython 3.7.9(tags/v3.7.9:13c94747c7,Aug 17 2020,18:58:18)[MSC v.1900File Edit shell Debug.内容,可以尝试将编码方式更换为GBK(UTF-8G4 bit (Amp64) on ygn?, "credits"or "license(" for more information"help .-=====RESTART:E:/书代码/第7章/第7章第14个程序.py=和GBK是较为主流的两种编码方式)。
":(有有离好像)-1 1 4neFileNotFoundError: [Errno 2]No such file or directory:'E:\书代码\编程语言概述.txt
注意编码器是用于将磁盘中的二进制内容提取为明文的工具。编码方式是指字符串的编码格式,表示该字符串可以使用哪种编码器读取。
19
图 7-16
·readline()方法
readline()方法的使用形式如下:
readline(size =-1
参数size:默认从文件中读取一行内容,如果size为其他数值,则读取该行前size个字符。
功能:从文件中读取一行内容。
返回值:读取内容,是字符串类型的。

01 f= open(r'E:\书代码\第7章\编程语言概述02 print(f.readline())03 f.close()
for
读取文
示例代
执行代码后只会输出“编程语言概述,txt”文件中的一行内容,输出结果如图7-17所示。
F puthor:Edit Shell Debug Options Windaw Helm. nona78 (ae/wa7 9:13C94747C7, AUg 17 2020.18664 bit(AMD64)] on win32t chm42copyright , "credits"or "license()" for mor w-= RESTART:E:/书代码/第7章/第7章第15个岸高张器级交级器财人类册育,网此用户(人)与计算机之互约6的
= oF
y
01
for
02
P
03
04 f.clo
第1行程语言概第21对象f,山变量line执
》>
图 7-17
如果往readline()中填入参数6,则表示读取当前行内容中的前6个字符,代码如下:01 f= open('E:\书代码\第7章\编程语言概述,txt','r',encoding='utf-8')02 print(f.readline(6))03 f.close()
代码执行结果:

由于计算机不
出一个
。readlines()方法
使输出
readlines()方法的使用形式如下!readlines (hint
件会1
功能:从文件中读取所有行的内容,以列表形式返回,每行内容为列表中的一个元素。参数hint:获取所在行内容的hint个字符。例如第1行有5个字符,hint=5,就只读取第1行内容 (hint<时都只会读取第1行的内容)。第2行如果有5个字符,hint=6,会读取第1行和第2行内容(5<hint<11时会议取前两行的内容)。
返回值:包含文件内容的列表。
方法
示例代码(获取文件的全部内容):
01 ±= open(':\书代码\第7章\编程语言概述,txt','r',encoding='utf-8!)02 print(f.readlines())03 f.close()
代码执行结果如图7-18所示,外层使用了方括号括起来,表明输出结果是一个列表。列表中包含文件的所有内容,且列表的元素即文件中的一行内容可以看到输出结果中存在两个\n,表明输出结果中有两个换行符。
9:13094747c7,Aug 17 2020, 18:58:18)[MSC v.1900pyrigh+"credits" or "license()" forRESTART:E:/书代码/第7章/第7章第17个程序.Pymore informatior能识别人类
这3种方法有各自的适用场景,read()方法适用于文件不大的情况,因为当文件比较大,例如文件大小头图 7-18300MB时,使用read()方法会一次性将整个文件的内容全部读取到内存中,容易导致计算机出现卡顿甚至宕机,所以当文件较大时,建议读者使用readline()或readlines()方法,这两种方法会一行行地读取内容,能减少计算机卡顿或宕机的状况。

。for 循环遍历
读取文件内容还可以通过for循环遍历的方式来实现。
示例代码:
01 f= open(r':\书代码\第7章\编程语言概述,txt','r',encoding='utf-g')02 for line in f:
print(line)0504 f.close()
第1行代码以'r'模式打开“E:\书代码\第7章\编程语言概述.txt”文件,且将编码方式设置为UTF-8。ags/v3.7.9:13c947477,Aug 17 2020, 18:58:18)[MSC v.1900coon ign?"credits"or "license()" for more information第2行代码是一个for循环语句,循环内容为文件e o=--RESTART:E:/书代码/第7章/第7章第18个程序.py =-=对象f,此方法可以将f对象中的内容一行行地赋值给岸示社察机不能设别人类语言,因此用户(人)与计算机交互的过程往往是通过程变量line。9功能,花界變祝按晨在网采获行相应的操222
执行代码后的输出结果如图7-19所示
图 7-19
由图7-19中的输出结果可以看出每行内容存在两次换行,这是因为print()函数在每次执行后都会在未尾输出一个换行符,而文件内容中也有换行。这种情况下可以通过print(1ine, end=")设置print()不换行的形式使输出结果和文件内容保持一致。
for循环遍历文件的方法更方便灵活,且无须使用read()、readline()或readlines()读取方法。遍历读取文件会一行一行地读取,因此不用担心文件过大而导致系统卡顿或宕机。
J容(hi
It<11时线
7.2.3 写入文件
7.2.2小节实现了读取文件的操作,本小节主要实现把内容写入文件,因此需要使用到写入的方法,写入的方法有write(参数)和writelines(参数)。
write()方法
write()方法的使用形式如下:write(text)
MSC
inform
程序,p
文件大小甚至剂能减少
功能:把字符串text写入文件。
参数text:表示需要写入的信息,其数据类型为字符串类型。
返回值:返回写入的字符数(字符串的长度)。
open(r'E:\书代码\第7章\编程语言概述,txt','w',enceding='utf-8')01.f=)2 print(f.write('我正在学习Python'))
示例代码(往文件中写入内容):
第1行代码表示打开“E:\书代码\编程语言概述,txt”文件,由于使用了'w'模式,因此会将原有“编程语言棚03 f.close()
第2行代码将字符串'我正在学习python'通过write()方法写入“编程语言概述.txt”文件。述.txt”文件的内容全部清除。第3行代码使用close()方法关闭文件,第2行代码写入的内容只有在关闭文件时才能保存下来。如果读者忘记在代码最后使用close0可能会导致写入的内容无法被保存到文件中。
1

代码执行后的输出结果为11,表示写入的字符串长度为11,打开“编程语言概述.txt”文件后的显示效果如图7-20所示。
閶 编程语言概述.txt-记事本
文件() 编辑(日) 格式() 査看 帮我正在学习Python
参数cooki
个汉字的偏看
参数whe1
开始计算,值
。writelines()方法
示例代码
writelines()方法的使用形式如下:
图7-20
e= opel
writelines(lines)
rint(f
print(f
功能:把字符串列表(列表中的元素均为字符串)写入文件,且不添加换行符。
参数lines:字符串列表。
05 print(
04
f.clos
返回值:返回None,表示空。
06
第2、3
示例代码(将字符串列表的内容写入文件):
第4行
01 f = open('E:\书代码\第7章\a7.txt','w',encoding='utf-8')02 1s =['zhangsan','lisi','wangwu'03 print(f.writelines(ls))
言概述.tx
并且向右
04 f.close()
代码:
行开头的
执行代码后会出现异常错误,这是因为字符串中的路径地址是非法的,系统会将'E:\书代码\第7章(a7.c的\a默认为转义字符,因此在书写地址时要用替代\。修改后的新代码如下01 王 = open('E:\\书代码\\第7章\\a7.txt','w02 1s=['zhangsan',ilisi'W2CNN03 print(f.writelines(1s)04 f.close()
个偏移量

内容的
在第1行代码中,由于文件夹“E:\书代码\第7章”中并没有a7.txt文件,因此程序会在文件夹“E:书代川第7章”中创建一个名为“a7.txt”的新文件。第3行代码将列表!s写入文件对象f中,由于writelines()方法不返回内容,因此输出结果为None。
02
B?
e
全部
7.3 文件的读取位置和路径


当对文件进行操作时,不管是读取文件还是写入文件,其执行顺序都是从文件开头依次向下,且内存会记录读取文件和写入文件的位置,再次执行时会从记录中最近的执行位置处继续执行。例如使用readline()方法读取文件的第1行内容后,再次使用readline()会继续读取第2行内容,写入文件操作与此相似。
7.3.1 调整文件的读取位置
当读取到文件末尾,需要跳转到文件开头重新读取时;或当写入到文件末尾,需要重新在文件开头写入内容时,可以使用seek()方法。其使用形式如下:seek(cookie, whence=0)
功能:把文件指针(用于指明文件读取的位置)移动到新的位置。

参数cookie:表示相对于whence位置的偏移量,如果为正数表示向右偏移,如果是负数表示向左偏移。
个汉字的偏移量是3。
参数whence:表示文件指针设定的位置,默认值为0,表示从文件开头处开始计算,值为1表示从当前位置开始计算,值为2表示从文件结尾处开始计算。
if= open(z'E:\书代码\第7章\编程语言概述,txt','g',encoding-'utf-8?2 print(f.readline(),end=rt)s print(f.readline(),end='1)04 f.seek(9,0)
示例代码(实现多次读取文件内容):
05 print(f.readline(),end=r
06 f.close()
章\a7.txt中
第2、3行代码会按顺序依次读取“编程语言概述,txt”(已恢复为最初内容)文件中第1行和第2行的内容并输出。第4行代码中的f.seek(9,0)表示将文件读取位置移动到文件开头,因此再次使用f.readline()读取“编程语言概述.txt”文件时,会读取文件中的第1行内容, Python 3.7.'ython 3.7.g (tags/v3.7.g:13c94747c7, Aug 17 2020, 18:58:18) (MsC v.1900 64 bit (AMD64)] on并且向右偏移9个位置。
ype "help","copyright","credits" or "li
代码执行结果如图7-21所示,输出内容中的第5行开头的“由于计”没有显示,即该部分的内容为9个偏移量。
曾精罘能识别人类语言,因此用户(人)与计算机交互的过程往往是通过程序的操作来实现的:
图 7-21
如果读取完毕后需要再次读取前面的内容,而没有使用seek()方法设置文件读取位置,会出现无法读取到内容的问题。修改后的新代码如下:
E:\书代码s()方法#
01 f = open(r'E:\书代码\第7章\编程语言概述,txt','r'encoding02print(f.read())03 print(f.readline())
第2行代码中的f.read()将文件中的所有内容全部读取完毕,使得文件读取位置指向了文件末尾,导致下一行的读取操作要从文件末尾开始,而文件末尾并没有内容,因此第3行代码中的print()语句输出的f.readline()并没有实际内容。执行代码后的输出结果如图7-22所示。
:3.7.g (tags/v3.7.9:13c9474707, Aug 17 2020,18:58:18) [MSC v.1900 64 bit
credits
计簋机瑾姣甪
图 7-22
学会记录)方法读
入内容
7.3.2 绝对路径和相对路径
在使用open()函数读取文件时,第1个参数用于表明文件的路径和名称,其中文件路径的表示方法有两种分别为绝对路径和相对路径。7.3.1小节中涉及的文件路径都是绝对路径。
绝对路径表示从磁盘的根目录开始到目标文件的路径。相对路径表示相对于当前文件的位置到目标文件的位置。例如代码文件的绝对路径为“E:\书代码\第7章\第7章第24个程序.py”,而需要读取的目标文件的绝对路径是“E:\书代码\第7章\project_l\readme,txt”。如果需要在“第7章第24个程序.py”代码文件中读取readme.txt文件,使用从代码文件到readme.txt文件的相对路径即可。readme.txt文件的相对路径如下:./project 1/readme.txt
1

参数cookie:表示相对于whence位置的偏移量,如果为正数表示向右偏移,如果是负数表示向左偏移。
个汉字的偏移量是3。
参数whence:表示文件指针设定的位置,默认值为0,表示从文件开头处开始计算,值为1表示从当前位置开始计算,值为2表示从文件结尾处开始计算。
if= open(z'E:\书代码\第7章\编程语言概述,txt','g',encoding-'utf-8?2 print(f.readline(),end=rt)s print(f.readline(),end='1)04 f.seek(9,0)
示例代码(实现多次读取文件内容):
05 print(f.readline(),end=r
06 f.close()
章\a7.txt中
第2、3行代码会按顺序依次读取“编程语言概述,txt”(已恢复为最初内容)文件中第1行和第2行的内容并输出。第4行代码中的f.seek(9,0)表示将文件读取位置移动到文件开头,因此再次使用f.readline()读取“编程语言概述.txt”文件时,会读取文件中的第1行内容, Python 3.7.'ython 3.7.g (tags/v3.7.g:13c94747c7, Aug 17 2020, 18:58:18) (MsC v.1900 64 bit (AMD64)] on并且向右偏移9个位置。
ype "help","copyright","credits" or "li
代码执行结果如图7-21所示,输出内容中的第5行开头的“由于计”没有显示,即该部分的内容为9个偏移量。
曾精罘能识别人类语言,因此用户(人)与计算机交互的过程往往是通过程序的操作来实现的:
图 7-21
如果读取完毕后需要再次读取前面的内容,而没有使用seek()方法设置文件读取位置,会出现无法读取到内容的问题。修改后的新代码如下:
E:\书代码s()方法#
01 f = open(r'E:\书代码\第7章\编程语言概述,txt','r'encoding02print(f.read())03 print(f.readline())
第2行代码中的f.read()将文件中的所有内容全部读取完毕,使得文件读取位置指向了文件末尾,导致下一行的读取操作要从文件末尾开始,而文件末尾并没有内容,因此第3行代码中的print()语句输出的f.readline()并没有实际内容。执行代码后的输出结果如图7-22所示。
:3.7.g (tags/v3.7.9:13c9474707, Aug 17 2020,18:58:18) [MSC v.1900 64 bit
credits
计簋机瑾姣甪
图 7-22
学会记录)方法读
入内容
7.3.2 绝对路径和相对路径
在使用open()函数读取文件时,第1个参数用于表明文件的路径和名称,其中文件路径的表示方法有两种分别为绝对路径和相对路径。7.3.1小节中涉及的文件路径都是绝对路径。
绝对路径表示从磁盘的根目录开始到目标文件的路径。相对路径表示相对于当前文件的位置到目标文件的位置。例如代码文件的绝对路径为“E:\书代码\第7章\第7章第24个程序.py”,而需要读取的目标文件的绝对路径是“E:\书代码\第7章\project_l\readme,txt”。如果需要在“第7章第24个程序.py”代码文件中读取readme.txt文件,使用从代码文件到readme.txt文件的相对路径即可。readme.txt文件的相对路径如下:./project 1/readme.txt
1

http://www.dtcms.com/a/269509.html

相关文章:

  • 微算法科技(NASDAQ MLGO)研究非标准量子预言机,拓展量子计算边界
  • 【QT】-隐式转换 explicit用法
  • linux常用管路命令
  • 【1-快速上手】
  • 部署并运行Spike-Driven-Transformer或QKFormer
  • 香港站群服务器与普通香港服务器对比
  • 算法设计与分析:分治、动态规划与贪心算法的异同与选择
  • 【计算机网络】第三章:数据链路层(下)
  • 89104 PCIe Switch芯片国产替代 - PCIE5.0国产AI服务器高性能扩展,支持海光/龙芯/飞腾等
  • 【零基础学AI】第30讲:生成对抗网络(GAN)实战 - 手写数字生成
  • 从SEO到GEO:优化策略如何应对传统搜索与AI搜索的巨变
  • SpringAI编码实战:使用本地免费部署的大语言模型跑起来
  • NuxtJS中网络请求模块的封装与最佳实战
  • leetcode202.快乐数
  • 算法设计与分析 知识总结
  • Puppeteer 库简介:背景、用法与原理
  • LeetCode--42.接雨水
  • 什么是RAG?
  • 深入解析Java中的“128陷阱“:Integer缓存机制源码分析
  • 容器技术入门之Docker环境部署
  • Docker快速部署Hive服务
  • 【技术应用】CUTTag应用实例解析:比ChIP-seq更精准高效的DNA-蛋白互作研究
  • No static resource druid
  • C++(STL源码刨析/vector)
  • 虚幻引擎UE5专用服务器游戏开发-20 添加基础能力类与连招能力
  • Takebishi旗下智能硬件网关产品devicegateway详细介绍
  • ThreadPoolTaskExecutor 的使用案例
  • 【PTA数据结构 | C语言版】求单链表list中的元素个数,即表长
  • NumPy-随机数生成详解
  • AI编程的未来是智能体原生开发?