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

Python----Python高级(文件操作open,os模块对于文件操作)

一、文件处理

1.1、文件操作的重要性和应用场景 

1.1.1、重要性 

数据持久化:

        文件是存储数据的一种非常基本且重要的方式。通过文件,我们可 以将程序运行时产生的数据永久保存下来,以便将来使用。

跨平台兼容性:

        文件是一种通用的数据交换格式,可以在不同的操作系统和平台 上进行传输和处理。

数据备份与恢复:

        定期备份数据到文件有助于防止数据丢失,便于数据恢复。

数据共享:

        文件可以轻松地在网络之间共享,使得多人协作成为可能。

配置管理:

        许多应用程序使用文件来存储配置信息,方便用户根据需要调整设 置。

日志记录:

        文件被广泛用于记录程序运行时的日志,这对于调试和性能监控非常 重要。

1.1.2、应用场景 

数据分析:

        读取数据文件进行数据分析,或者程序的运行结果输出到文件,以便 于报告或进一步分析。

Web开发:

        读取配置文件来设置Web服务器的各种参数,处理用户上传的文件。

系统管理:

        读取和写入日志文件以监控系统状态。

文本处理:

        读取文本文件,进行搜索、替换等操作,并将处理后的结果保存到文 件中。

游戏开发:

        读取账号数据、保存账号数据,管理游戏资源文件。

1.2、文件

        文件是一个存储在某种持久性存储介质(如硬盘、固态驱动器或磁带等)上的数据集 合。文件可以包含各种类型的信息,包括文本、图像、音频、视频、应用程序代码以 及其他类型的二进制数据。文件是操作系统用来组织和管理这些数据的主要方式之 一。

1.2.1、文件组成 

数据:

        文件中存储的实际信息,即用户想要保存的具体信息,如文本、图像或代 码等。

元数据:

        关于文件本身的附加信息,包括但不限于文件名、创建日期、文件大 小、文件类型等。

文件系统:

        这是操作系统用来组织和管理文件的一种逻辑结构,包括文件的命 名、存储和检索方式。文件系统还负责管理磁盘空间的分配,并确保文件可以被 正确地读写。常见的文件系统有 FAT32、NTFS 等。

1.2.2、文件的属性 

文件名:

        用于标识文件的唯一名称,通常包含主文件名和扩展名(如 document.txt)。

位置:

        文件存储在一个特定的位置,这个位置可以用目录或路径来表示。例如, 在Windows系统中,文件路径可能是 C:\Documents\example.txt;而在Unix like系统中,路径可能是 /home/user/Documents/example.txt。

文件类型:

        根据文件的内容和用途,文件可以有多种类型,如文本文件、图像文 件、音频文件等。

文件大小:

        文件占用的存储空间大小,通常以字节(B)、千字节(KB)、兆字 节(MB)或吉字节(GB)为单位。

创建日期和时间:

        文件被创建的时间戳。

修改日期和时间:

        文件最后一次被修改的时间戳。

访问权限:

        定义了不同用户对文件的读、写、执行权限。

1.2.3、文件的类型 

在Windows系统中,大致可以分为以下几种:

文本文件:

        包含可读字符的文件,如.txt、.csv、.html等。 

二进制文件:

        包含不可直接读的原始二进制数据的文件,如.exe、.jpg、.mp3 等。

可执行文件:

        可以被操作系统执行的文件,如.exe(Windows)。

数据文件:

        用于存储应用程序数据的文件,如数据库文件、配置文件等。

目录/文件夹:

        用于组织和管理其他文件的特殊文件。

在Linux系统中,可以分为以下几种:

-: 普通文件,比如txt、py等。

d:目录文件,比如xx目录,类比Windows中的文件夹。

b:块设备文件,Linux系统中的底层驱动文件。 

c:字符设备文件,Linux系统中的底层驱动文件。

l: 链接文件,类似于快捷方式

p:管道文件,用于进程间的通信。

s:套接字文件,用于网络通信的端点,用于网络传输。

1.3、文件的路径

        在计算机文件系统中,路径是用来标识文件或目录位置的一种方式。路径有两种主要 的形式:绝对路径和相对路径。这两种路径形式对于在文件系统中导航和访问文件非 常重要。

1.3.1、绝对路径

        绝对路径是从文件系统的根目录开始的一条完整路径,它指明了从根目录到达目标文 件或目录的具体步骤。

特点:

        不依赖于当前工作目录。

        在不同用户或程序间具有一致性。

        提供了文件或目录的完整位置信息。 

示例:

        在Windows系统中,一个绝对路径可能看起来像这样:                 C:\Users\John\Documents\report.txt

        在Linux/Unix系统中,一个绝对路径可能看起来像这 样:                 /home/john/Documents/report.txt

1.3.2、相对路径

相对路径是指相对于某个起始点(通常是当前工作目录)到达目标文件或目录的路 径。

特点:

        取决于当前工作目录的位置。

        更加灵活,但可能会因上下文变化而变化。

        适用于在同一目录层级或附近层级内的文件访问。 

示例:

        在Windows系统中,如果当前工作目录是 C:\Users\John\Documents,那么我 想去找同目录下的example.txt的话,就是.\example.txt,如果上级目录下的 example.txt的话,就是..\example.txt。

        在Linux/Unix中,如果当前工作目录是 /home/john/Documents,那么我想去找 同目录下的example.txt的话,就是./example.txt,如果上级目录下的 example.txt的话,就是../example.txt。 

1.3.3、路径中的特殊符号

. (当前目录):表示当前目录。

.. (上一级目录):表示当前目录的父目录。 

1.3.4、 使用场景

绝对路径:

        当需要指定确切位置,或者在不同环境(如不同用户的系统)下保持 一致时使用。

相对路径:

        当文件位于同一目录或相关联的子目录中时使用,可以使程序更加灵 活和便携。

1.4、文件系统

        文件系统是一种逻辑结构,它定义了如何在物理存储设备(如硬盘驱动器、固态硬盘 等)上组织和管理文件。文件系统负责跟踪文件的位置、大小、元数据(如创建时 间、修改时间等),并提供创建、读取、更新和删除文件的接口,方便操作系统或用 户进行文件的操作。

主要功能:

1. 命名:为文件和目录提供唯一的名称。

2. 存储:管理文件在存储设备上的物理位置。

3. 检索:允许用户通过文件名或其他属性查找文件。

4. 更新:支持文件的创建、修改和删除。

5. 权限管理:控制用户和组对文件和目录的访问权限。

6. 磁盘空间管理:跟踪可用和已用磁盘空间,并在必要时进行空间分配和回收。

7. 错误恢复:在发生错误(如系统崩溃或电源故障)时,尝试恢复文件系统的完整 性。

常见的文件系统类型:

FAT (File Allocation Table):主要用于较旧的系统或移动存储设备。

NTFS (New Technology File System):Windows 操作系统的默认文件系统。

HFS+ (Hierarchical File System Plus):以前是 macOS 的默认文件系统。

APFS (Apple File System):macOS 和 iOS 设备的新一代文件系统。

ext4 (Fourth Extended File System):Linux 操作系统的常用文件系统。

XFS (XFS File System):另一种用于 Linux 的文件系统。

1.5、文件操作 

1.5.1、打开文件

使用open()函数来打开文件,这个函数返回一个文件对象,可以用来 进行后续的读写等操作。

res = open(file_name, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

file_name:

        要打开的文件的路径加名称(包含后缀名),可以是绝对路径也可 以是相对路径。

mode:

        打开文件的模式,默认为‘r',表示只读模式且以文本模式读取。

buffering:

        可选参数,缓冲区大小。0表示无缓冲,1表示行缓冲,更大的整数 表示具体的缓冲区大小。默认为None,表示默认的缓冲策略,大多数情况下, 使用默认值就可以了。

encoding:

        可选参数,用于指定文件的编码,仅适用于文本模式,默认值None 表示使用系统的默认编码来打开文本文件。

errors:

        可选参数,用于指定如何处理编码和解码错误,对于二进制模式无效。 常见的值有strict、ignore、replace等。

newline:

        可选参数,用于控制通用换行符模式的行为。它可以是 None、''、 启用,\n、\r和 '\n'、 '\r'或 '\r\n'。如果设置为 None,则通用换行符模式被 \r\n都被识别为换行符,并以\n的形式在文本模式下读取。 如果设置为其他值,则在该值处进行换行符的转换。

closefd:

        可选参数,如果为 True(默认值),则在文件关闭时关闭文件描述 符。如果为 False,则文件描述符在文件关闭时保持打开状态。

open.txt

open('./open.txt')
# <_io.TextIOWrapper name='./open.txt' mode='r' encoding='utf-8'>

1.5.2、文件模式

'r':read 只读模式(默认值)。如果文件不存在就会触发异常。

'r+':打开文件进行读写,该文件必须存在。

'w':write 写入模式,如果文件存在则覆盖,不存在则创建。

'w+':打开文件进行读写,如果文件存在则覆盖,如果不存在则创建。

'a':追加模式,如果文件存在则在文件末尾追加内容,不存在则创建。

'a+':打开文件进行读写,如果文件存在则在末尾追加,如果不存在则创建。

'x':独占创建模式,如果文件已存在则抛出异常,这可以用来避免覆盖现有文 件。

'b':二进制模式,读写时,数据不会被转换,直接以字节形式处理。

't':文本模式(默认值),读写时,数据会被视为字符串。

1.5.3、读取文件

read(size):size是可选参数,在文本模式下,一次最多读取文件指针后面size 个大小的字符,在二进制模式下,一次最多读取文件指针后面size个大小的字 节,默认size为None,表示一次性读取文件指针后面的所有内容并将其作为字符 串返回。

readline():从文件中读取单行数据。

readlines():读取所有行,并返回一个列表。

path='./open.txt'
file=open(path)
print(file.read())
'''
111111111111111111111111111111111111111
222222222222222222222222222222222222222
333333333333333333333333333333333333333
444444444444444444444444444444444444444
'''
path='./open.txt'
file=open(path)
print(file.readline())
'''
111111111111111111111111111111111111111
'''
path='./open.txt'
file=open(path)
print(file.readlines())
# ['111111111111111111111111111111111111111\n', '222222222222222222222222222222222222222\n', '333333333333333333333333333333333333333\n', '444444444444444444444444444444444444444']

1.5.4、写入文件

write(str):将str的内容覆盖到当前文件指针位置的后面,并将文件指针移动 到新的写入位置。会返回写入的字符数量,写入其他类型的对象时,要先将它们 转化为字符串或字节对象。

writelines():写入一个字符串列表。

path='./open.txt'
file=open(path,'r+')
file.write('aaaaaaaaaaaaaaaaaa')
file.close()
'''
aaaaaaaaaaaaaaaaaa111111111111111111111
222222222222222222222222222222222222222
333333333333333333333333333333333333333
444444444444444444444444444444444444444
'''
path='./open.txt'
file=open(path,'r+')
file.writelines(['aaaaaaaaaaaaaaaaaa','bbbbbbbbbbbbbbbbbb'])
file.close()
'''
aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbb111
222222222222222222222222222222222222222
333333333333333333333333333333333333333
444444444444444444444444444444444444444
'''

1.5.5、关闭文件

使用close()方法关闭文件。关闭文件是一个重要的操作,因为它释放 了与文件对象关联的系统资源,并确保数据正确地写入存储介质。

功能:

释放资源:关闭文件,释放与文件对象关联的所有系统资源,如文件描述符、缓 冲区等。

刷新缓冲区:在关闭文件之前,它会自动刷新文件的内部缓冲区,确保所有缓冲 的数据都被写入磁盘。

禁止进一步操作:关闭文件后,文件对象不再允许进行读取、写入或其他操作。 

重要性:

资源管理:文件描述符是有限的资源,如果不关闭文件,可能会导致资源泄漏, 特别是在打开大量文件时。

数据完整性:确保所有缓冲的数据都写入磁盘,防止数据丢失。尤其是在写入操 作后,如果不关闭文件,可能会导致最后写入的数据没有保存。

防止错误:关闭文件可以防止对已关闭文件的非法操作,这些操作可能会引发异 常。

提高效率:关闭不再需要的文件可以释放系统资源,提高程序的整体效率。

清理操作:在关闭文件时,可以执行一些清理操作,如关闭网络连接或释放其他 相关资源。 

path='./open.txt'
file=open(path,'r+')
file.close()

1.5.6、with语句

with语句是一种上下文管理器(context manager),用于简化资源 的打开和关闭过程,确保资源在不需要时得到适当的释放。这种机制常用于文件操 作、网络连接、锁等资源的处理,可以避免资源泄露和出现其他资源管理问题。

with expression [as variable]:

        with-block 

表达式(expression):这个表达式必须返回一个实现了上下文管理器协议的对 象,也就是说,它需要包含 __enter__和 __exit__两个方法。

as子句:这是可选的。如果提供了as子句,那么 expression中 法的返回值将被赋值给变量。

with-block:这个代码块是 __enter__方 with语句的主体,在执行这个代码块之前,会首先 调用上下文管理器的 __enter__方法。当 with-block执行完毕后,不论是因为 正常完成还是因为异常,都会调用上下文管理器的 __exit__方法,该方法负责 关闭文件。 

执行流程为: 

执行表达式:首先执行 调用 expression,返回一个上下文管理器对象。

__enter__() 方法:上下文管理器对象的 __enter__() 方法被调用,该 方法通常用于执行一些初始化操作,如打开文件。

执行语句块:语句块中的语句按照顺序执行。

调用 __exit__() 方法:当语句块执行完毕后,上下文管理器对象的 __exit__() 方法被调用,该方法通常用于执行清理操作,如关闭文件或释放数 据库会话。

使用 with 语句的好处 :

自动资源管理:

        不需要手动调用

更好的错误处理:

        close 方法,代码更简洁。 __exit__() 方法可以包含异常处理代码,确保在发生异常时 资源得到妥善处理。

更好的代码组织:

        with 语句有助于将相关的操作组织在一起,使代码更加清 晰。

with open(r"open.txt","w+") as f:
    f.writelines('大家好')
# 大家好

1.6、文件指针的操作 

1.6.1、获取文件指针的位置

tell()

tell()函数没有参数,它的功能就是返回文件指针当前位置相对于文件开头的偏移量。 这个偏移量是一个整数,表示从文件开头到当前读取位置的字节数。

注意事项 :

        tell 方法仅在文件被打开用于读取时才有意义,因为在写入模式下,文件指针 的位置会随着写入操作而改变。

        在读取模式下, tell 方法返回的是当前读取位置相对于文件开头的偏移量。

        其返回值是字节数,不是字符数,对于utf-8的编码格式来说,一个汉字占三个字 节,所以读取中文时,字符数与字节数是不一样的。 

with open(r"open.txt","r") as f:
    print(f.tell())
# 0

1.6.2、改变文件指针的位置

seek()

seek(offset, whence=0)

offset:

        表示相对于whence的偏移量,是一个整数。这个偏移量可以是正数,也可 以是负数。正数表示向文件末尾方向移动,负数表示向文件开头方向移动,0则表示 不偏移。

whence:

        是一个可选的参数,默认为0。它指定了offset的起始位置,可以是以下 三个值之一:                 0:表示从文件开头开始计算偏移量(默认值)。

                1:表示从当前文件指针位置开始计算偏移量。

                2:表示从文件末尾开始计算偏移量。 

注意事项:

        seek 方法在文本模式和二进制模式下都有效,但文本模式whence只能使用默认 值,不能自己修改。

        seek 方法基于字节偏移量。这意味着即使文件包含多字节字符, 仍然是字节偏移量。 

with open(r"open.txt","r") as f:
    print(f.tell())#0
    f.seek(5)
    print(f.tell())#5

二、os模块对于文件操作

2.1、调用操作系统命令

os.system()调用windows系统的记事本程序

import os
os.system("notepad.exe")

os.system()调用windows系统中ping命令 

import os
os.system("ping www.baidu.com")

 os.startfile()直接调用可执行文件 

import os
os.startfile('C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe')

2.2、获取文件大小

os.path.getsize(path)

        path (字符串) - 文件的路径。

        返回一个整数,表示文件的大小(以字节为单位)。如果文件不存在或无法访问,会 抛出异常。

import os
path='./open.txt'
print(os.path.getsize(path))#73

2.3、获取文件的最后修改时间

os.path.getmtime(path)

        path (字符串) - 文件的路径

        返回一个浮点数,表示文件的最后修改时间,自纪元(1970年1月1日 00:00:00 UTC)以来的秒数,可以搭配time模块进行格式化。如果文件不存在或无法访问,会 抛出异常。

import os
path='./open.txt'
print(os.path.getmtime(path))#1737371817.6055775

2.4、获取文件的创建时间

os.path.getctime(path)

        path (字符串) - 文件的路径。

        返回一个浮点数,表示文件的最后修改时间,自纪元(1970年1月1日 00:00:00 UTC)以来的秒数,可以搭配time模块进行格式化。如果文件不存在或无法访问,会 抛出异常。

import os
path='./open.txt'
print(os.path.getctime(path))#1737340129.5444336

2.5、获取文件的最后访问时间

os.path.getatime(path)

        path (字符串) - 文件的路径

        返回一个浮点数,表示文件的最后修改时间,自纪元(1970年1月1日 00:00:00 UTC)以来的秒数,可以搭配time模块进行格式化。如果文件不存在或无法访问,会 抛出异常。

import os
path='./open.txt'
print(os.path.getatime(path))#1737371872.8743682

2.6、创建目录

os.mkdir(path, mode=0o777)

        path (字符串) - 要创建的目录的路径。

        mode (整型,可选) - 设置新创建目录的权限位。默认值是 0o777(八进制表 示),意味着所有人都有读、写和执行权限,只针对Linux系统,Windows系统 会忽略。

如果目录创建成功,则函数不返回任何内容。如果指定的路径已经存在就会抛出异 常,如果路径是无效的,或者由于权限不足等原因无法创建目录,也会抛出异常。 

注意事项

        os.mkdir 只能创建一级目录,如果父目录不存在,则会抛出异常。

        如果需要创建多级目录结构,可以使用 需的中间目录。 

import os
os.mkdir('./hhhh')

2.7、删除目录

os.rmdir(path)

        path (字符串) - 要删除的空目录的路径。

        如果目录删除成功,则函数不返回任何内容。如果指定的路径不存在,则会抛出异 常,如果路径不是一个空目录,或者由于权限不足等原因无法删除目录,也会抛出此 异常。

注意事项

        os.rmdir只能删除空目录。如果目录中包含文件或其他目录, 将无法删除它,并且会抛出异常。

import os
os.rmdir('./hhhh')

2.8、改变当前工作目录

os.chdir(path)

        path (字符串) - 要切换到的目录的路径。如果指定的路径不存在、指定的路径不 是一个目录、没有权限更改到指定的目录就会抛出异常。

        如果目录切换成功,则函数不返回任何内容。

import os
print(os.getcwd())#d:\project
os.chdir('./aaaaaaaaaaaa')
print(os.getcwd())#d:\project\aaaaaaaaaaaa

2.9、获取当前工作目录

os.getcwd()

        该函数没有参数,但会返回一个字符串,表示当前工作目录的路径。

注意事项

        os.getcwd() 返回的是字符串形式的路径。

        在不同的操作系统中,路径的表示方式可能不同。例如,在 Windows 中路径通 常使用反斜杠 \,而在 Unix/Linux 系统中使用正斜杠 /。 

常用于:

        当需要在脚本中确定当前的工作位置时。

        在进行文件操作之前,需要知道文件的相对路径是基于哪个目录。

        当需要在不同目录之间切换时,但之后想要回到原始目录。 

import os
print(os.getcwd())#d:\project

2.10、列出目录下的所有内容

os.listdir(path)

        path (字符串) - 要列出内容的目录的路径。如果省略,默认为当前工作目录。如 果指定的路径不存在、指定的路径不是一个目录、没有权限读取指定的目录就会 抛出异常。

        返回一个列表,其中包含指定路径下的所有文件和子目录的名称。

注意事项:

        os.listdir 不会递归地列出子目录中的内容。它只列出直接位于指定目录下的 文件和子目录。

        返回的列表中只包含名称,不包含路径。如果需要完整路径,你需要将目录名称 与路径结合起来。

        如果目录为空,返回的列表将是空的。

        在使用 os.listdir 时,应该考虑到可能出现的异常,并适当处理它们,以确保 代码的健壮性。 

import os
print(os.listdir())#['hhh']

2.11、重命名目录

os.rename(src, dst)

        src (字符串) - 要重命名的文件或目录的当前路径。

        dst (字符串) - 文件或目录的新名称和路径。

        如果重命名成功,则函数不返回任何内容。

import os
path='./open.txt'
os.rename(path,'./openwith.txt')

2.12、检查路径是否为目录

os.path.isfile(path)

        path (字符串) - 要检查的路径      

        如果指定的路径是一个目录,返回 True;否则返回  False

注意事项:

        os.path.isdir 不会抛出异常。如果指定的路径不存在,它会返回 不是抛出异常。

        如果路径存在但不是目录, os.path.isdir 也会返回False

        路径可以是绝对路径,也可以是相对路径。

import os
path='./openwith.txt'
os.path.isdir(path)#False

2.13、检查路径是否为文件

os.path.isfile(path)

        path (字符串) - 要检查的路径      

        如果指定的路径是一个文件,返回 True;否则返回  False

主要用途:

        在处理文件之前,确认指定的路径确实是一个文件,这样可以避免对目录执行文 件操作。

        在脚本中执行条件逻辑时,根据路径是否为文件来决定下一步操作。

        在文件处理脚本中,区分文件和目录,以便进行适当的操作。

import os
path='./openwith.txt'
os.path.isfile(path)#True

2.14、路径拼接

os.path.join(path, *paths)

        path (字符串) - 起始路径,通常是一个目录路径。

        *paths (可变参数) - 需要连接到 path 的其他路径片段。

        返回一个字符串,表示将所有路径片段连接后的完整路径。

os.path.join()的作用:

        合并路径:

                将多个路径组件合并成一个单一的路径字符串。

        处理分隔符:

                它会根据操作系统自动添加或删除路径分隔符(例如,在 Windows 上是反斜杠 \,在 Unix/Linux 上是正斜杠 /)。

        消除冗余分隔符:

                如果路径组件之间有多余的分隔符,os.path.join() 会自动处 理,避免产生错误的路径。 

import os  

base_path = '/user/files'  
file_name = 'document.txt'  
full_path = os.path.join(base_path, file_name)  

print(full_path)  # /user/files/document.txt

2.15、路径拆分

head, tail = os.path.split(path)

        path: 表示要分割的路径。

        head: 它是 path 的目录路径

        tail: 它是 path 的文件名

主要用途:

        从完整路径中提取文件名或目录名。

        用于文件处理时,需要单独操作文件名和路径的其他部分。

        在遍历文件系统时,帮助确定每个文件的上级目录。 

import os  


full_path = '/user/files/document.txt'  
path, file_name = os.path.split(full_path)  

print(path)      # /user/files  
print(file_name) # document.txt

2.16、获取绝对路径

os.path.abspath(path)

        path (字符串) - 要转换为绝对路径的相对路径或文件路径

        返回一个字符串,表示转换后的绝对路径。        

主要用途:

        在脚本中确保使用的是文件的绝对路径,这样即使当前工作目录改变,脚本也能 正确地定位文件。

        将相对路径转换为绝对路径,以便在不同的环境中更可靠地引用文件或目录。

        在需要输出或记录文件的完整位置时使用

import os  

relative_path = 'openwith.txt'  
absolute_path = os.path.abspath(relative_path)  

print(absolute_path)  #d:\project\openwith.txt

2.17、检查路径是否存在

os.path.exists(path)

        path: 表示要检查的路径。

        path_exists: 返回一个布尔值,如果路径存在则返回 则返回 False。

主要用途: 

        在执行文件操作之前,确认文件或目录是否存在,以避免引发不必要的错误。

        在脚本中执行条件逻辑时,根据文件或目录的存在与否来决定下一步操作。

        在文件备份、清理或其他自动化任务中,检查特定文件或目录是否应该被处理。

import os  

path_to_check = './openwith.txt'  
exists = os.path.exists(path_to_check)  

print(exists)  # True

http://www.kler.cn/a/512310.html

相关文章:

  • Data Filtering Network 论文阅读和理解
  • ingress-nginx代理tcp使其能外部访问mysql
  • 鸿蒙子组件根据数据,刷新item Ui的规范
  • LeetCode 110.平衡二叉树
  • SSM课设-学生管理系统
  • 使用ffmpeg提高mp4压缩比,减小文件体积【windows+ffmpeg+batch脚本】
  • LLM大语言模型的分类
  • 通信协议—WebSocket
  • 电子应用设计方案97:智能AI投影仪系统设计
  • uniapp时间组件
  • 回归算法、聚类算法、决策树、随机森林、神经网络
  • Kafka面试题----Kafka都有哪些特点
  • Lightning初探
  • Go channel关闭方法
  • JAVA-IO模型的理解(BIO、NIO)
  • 在VSCode中使用Jupyter Notebook
  • Centos 8 交换空间管理
  • LeetCodeHOT100:60. n个骰子的点数、4. 寻找两个正序数组的中位数
  • 以“智慧建造”为理念,综合应用云、大、物、移、智等数字化技术的智慧工地云平台源码
  • 愿景是什么?
  • JSON-stringify和parse
  • 48V电气架构全面科普和解析:下一代智能电动汽车核心驱动
  • Android 空包签名(详细版)
  • AI刷题-病毒在封闭空间中的传播时间
  • 企业级流程架构设计思路-基于价值链的流程架构
  • 数据结构(二)栈/队列和二叉树/堆