【Python深入浅出】Python3中os模块:开启系统交互的万能钥匙
目录
- 一、引言:os 模块初印象
- 二、os 模块基础操作
- 2.1 文件与目录操作
- 2.1.1 创建操作
- 2.1.2 读取操作
- 2.1.3 删除操作
- 2.1.4 信息获取
- 2.2 系统信息获取与环境变量管理
- 2.2.1 系统信息获取
- 2.2.2 环境变量管理
- 2.3 进程管理与工作目录操作
- 2.3.1 进程管理
- 2.3.2 工作目录操作
- 三、os 模块使用进阶
- 3.1 路径处理技巧
- 3.1.1 路径拼接与分割
- 3.1.2 路径判断与信息获取
- 3.2 与其他模块的协同工作
- 3.2.1 与 sys 模块配合
- 3.2.2 与 shutil 模块配合
- 四、os 模块应用实战
- 4.1 自动化脚本编写
- 4.2 系统监控与管理
- 五、总结与展望
一、引言:os 模块初印象
在 Python 3 的庞大生态系统中,os模块犹如一座桥梁,连接着 Python 程序与底层操作系统,使得我们能够在 Python 代码中轻松实现对操作系统的各种操作。无论是文件和目录的管理,还是环境变量的获取与设置,亦或是系统命令的执行,os模块都提供了简洁而强大的功能接口 。
想象一下,你需要编写一个 Python 脚本,实现自动创建项目目录结构、根据环境变量配置项目参数以及执行特定系统命令来启动服务等一系列操作。若没有os模块,这些任务将变得异常繁琐,甚至难以实现。而借助os模块,我们只需寥寥数行代码,就能让 Python 程序与操作系统进行高效交互,完成复杂的系统任务。接下来,让我们深入探索os模块的丰富功能与应用场景。
二、os 模块基础操作
2.1 文件与目录操作
2.1.1 创建操作
在 Python 中使用os模块创建目录十分便捷。若要创建单级目录,可使用os.mkdir()函数,其参数为要创建的目录路径。比如,在当前目录下创建一个名为test_dir的目录,代码如下:
import os
os.mkdir('test_dir')
若要创建多级目录,可使用os.makedirs()函数,它能递归地创建所有必要的中间目录。例如,创建一个多级目录parent_dir/sub_dir/sub_sub_dir,代码如下:
import os
os.makedirs('parent_dir/sub_dir/sub_sub_dir')
2.1.2 读取操作
os.listdir()函数用于列出指定目录下的所有文件和子目录,返回一个包含这些名称的列表。若要列出当前目录下的所有内容,代码如下:
import os
contents = os.listdir('.')
print(contents)
若想获取当前工作目录的路径,可使用os.getcwd()函数,示例代码如下:
import os
current_dir = os.getcwd()
print(current_dir)
2.1.3 删除操作
删除文件时,使用os.remove()函数,参数为要删除的文件路径。例如,删除当前目录下的test.txt文件,代码如下:
import os
os.remove('test.txt')
删除单级目录可使用os.rmdir()函数,但该目录必须为空,否则会报错。如删除前面创建的test_dir目录(前提是它为空),代码如下:
import os
os.rmdir('test_dir')
若要删除多级目录及其包含的所有内容,可借助shutil模块的shutil.rmtree()函数。比如删除前面创建的parent_dir目录及其所有子目录和文件,代码如下:
import shutil
shutil.rmtree('parent_dir')
需要注意的是,使用shutil.rmtree()时要格外小心,因为它会递归删除目录及其所有内容,一旦操作失误,可能导致重要数据丢失。
2.1.4 信息获取
使用os.stat()函数可以获取文件或目录的详细信息,该函数返回一个包含各种文件属性的对象。例如,获取当前目录下test.txt文件的信息,代码如下:
import os
file_info = os.stat('test.txt')
print(file_info)
返回的file_info对象包含诸如文件大小(st_size)、最后修改时间(st_mtime)、创建时间(st_ctime)等信息。以文件大小为例,可通过file_info.st_size获取;获取最后修改时间可以使用file_info.st_mtime,得到的是时间戳形式,若要转换为人类可读的时间格式,可借助time模块,示例代码如下:
import os
import timefile_info = os.stat('test.txt')
mtime_timestamp = file_info.st_mtime
mtime_readable = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(mtime_timestamp))
print(f"最后修改时间: {mtime_readable}")
2.2 系统信息获取与环境变量管理
2.2.1 系统信息获取
获取操作系统类型可通过os.name属性,在 Windows 系统中,它返回’nt’;在 Linux 和 macOS 等 Unix - like 系统中,返回’posix’。示例代码如下:
import os
os_type = os.name
print(os_type)
在 Unix - like 系统中,还可以使用os.uname()函数获取更详细的操作系统信息,包括系统名称、主机名、内核版本等。但该函数在 Windows 系统中不可用。示例代码如下(在 Unix - like 系统中运行):
import os
sys_info = os.uname()
print(sys_info)
2.2.2 环境变量管理
获取系统所有环境变量,可通过os.environ属性,它返回一个包含所有环境变量的字典。示例代码如下:
import os
env_vars = os.environ
for key, value in env_vars.items():print(f"{key}: {value}")
若要获取特定环境变量的值,可使用os.environ.get()方法,例如获取PATH环境变量的值,代码如下:
import os
path_var = os.environ.get('PATH')
print(path_var)
2.3 进程管理与工作目录操作
2.3.1 进程管理
在 Python 中,可使用os.system()函数执行系统命令,该函数会直接在系统中执行命令,并返回命令执行的状态码,0 表示执行成功,非 0 表示执行失败。例如,在 Linux 或 macOS 系统中执行ls命令列出当前目录内容,在 Windows 系统中执行dir命令,代码如下:
import os
os.system('ls' if os.name == 'posix' else 'dir')
若要执行命令并获取命令的输出结果,可使用os.popen()函数,它返回一个文件对象,通过该对象的read()方法可读取命令的输出。例如,执行ls -l命令并获取其输出,代码如下:
import os
output = os.popen('ls -l').read()
print(output)
os.system()主要用于简单地执行命令,不太关注命令的输出;而os.popen()则更适合需要获取命令执行结果并进行后续处理的场景。
2.3.2 工作目录操作
使用os.chdir()函数可以改变当前工作目录,其参数为目标目录的路径。例如,将当前工作目录切换到/home/user/Documents(在 Windows 系统中,路径格式需相应调整),代码如下:
import os
os.chdir('/home/user/Documents')
改变工作目录在实际应用中非常有用,比如在处理某个项目的相关文件时,先切换到项目目录,后续对文件的操作就可以使用相对路径,使代码更简洁和可维护。
三、os 模块使用进阶
3.1 路径处理技巧
3.1.1 路径拼接与分割
在实际编程中,经常需要将不同的路径部分拼接成一个完整的路径,或者将一个完整路径分割成不同的部分。在 Python 中,os.path.join()函数是拼接路径的首选方法 ,它会根据操作系统的规范自动处理路径分隔符,确保路径格式的正确性和跨平台性。例如,要将目录路径/home/user与文件名test.txt拼接成完整路径,代码如下:
import os
dir_path = '/home/user'
file_name = 'test.txt'
full_path = os.path.join(dir_path, file_name)
print(full_path)
上述代码在 Unix - like 系统中会输出/home/user/test.txt,在 Windows 系统中会将路径分隔符正确转换为\,输出类似C:\home\user\test.txt(假设C:\home\user为目录路径)。
若要分割路径,os.path.split()函数可将一个路径分割为目录部分和文件名部分,返回一个包含这两部分的元组。例如,对前面拼接的路径进行分割,代码如下:
import os
full_path = '/home/user/test.txt'
dir_part, file_part = os.path.split(full_path)
print(f"目录部分: {dir_part}")
print(f"文件名部分: {file_part}")
此外,os.path.splitext()函数用于分割文件名和扩展名,同样返回一个元组。比如,对于文件test.py,分割代码如下:
import os
file_name = 'test.py'
name_part, ext_part = os.path.splitext(file_name)
print(f"文件名部分: {name_part}")
print(f"扩展名部分: {ext_part}")
3.1.2 路径判断与信息获取
在进行文件操作前,常常需要判断路径是否存在,以避免程序出错。
os.path.exists()函数可用于判断指定路径是否存在,无论是文件路径还是目录路径都适用。例如,判断/home/user/test.txt文件是否存在,代码如下:
import os
path = '/home/user/test.txt'
if os.path.exists(path):print(f"{path} 存在")
else:print(f"{path} 不存在")
若要判断路径是否为文件,可使用os.path.isfile()函数;判断是否为目录则使用os.path.isdir()函数。比如:
import os
file_path = '/home/user/test.txt'
dir_path = '/home/user'
if os.path.isfile(file_path):print(f"{file_path} 是文件")
if os.path.isdir(dir_path):print(f"{dir_path} 是目录")
获取文件的相关信息也是常见需求。os.path.getsize()函数可以获取文件的大小(以字节为单位)。例如,获取test.txt文件的大小,代码如下:
import os
file_path = 'test.txt'
file_size = os.path.getsize(file_path)
print(f"{file_path} 的大小为: {file_size} 字节")
3.2 与其他模块的协同工作
3.2.1 与 sys 模块配合
sys模块主要用于与 Python 解释器进行交互,os模块与sys模块在很多场景下可以协同工作,发挥强大的功能。在获取命令行参数方面,sys.argv列表包含了命令行传递给 Python 脚本的参数,其中sys.argv[0]是脚本名称,后续元素是实际参数。结合os模块,我们可以根据不同的命令行参数执行不同的系统操作。例如,编写一个简单的文件操作脚本,根据命令行参数决定是列出目录内容还是创建目录,代码如下:
import os
import sysif len(sys.argv) < 2:print("请提供操作参数,如 'list' 或 'create'")
else:operation = sys.argv[1]if operation == 'list':dir_content = os.listdir('.')print("当前目录内容:")for item in dir_content:print(item)elif operation == 'create':if len(sys.argv) < 3:print("请提供要创建的目录名")else:new_dir = sys.argv[2]os.makedirs(new_dir, exist_ok=True)print(f"{new_dir} 目录已创建")
在程序退出时,sys.exit()函数用于终止 Python 程序的执行,并可以返回一个退出状态码。结合os模块执行系统操作后,可根据操作结果使用sys.exit()返回相应的状态码,方便外部程序判断脚本的执行情况。例如,在执行文件删除操作后,根据删除是否成功返回不同的状态码,代码如下:
import os
import sysfile_path = 'test.txt'
try:os.remove(file_path)print(f"{file_path} 已成功删除")sys.exit(0) # 正常退出,状态码为0
except FileNotFoundError:print(f"{file_path} 未找到")sys.exit(1) # 异常退出,状态码为1
3.2.2 与 shutil 模块配合
shutil模块提供了一些高级的文件和目录操作功能,与os模块配合使用,可以完成更复杂的文件管理任务。在文件复制操作中,os模块本身没有直接的文件复制函数,而shutil模块的shutil.copy()函数可以实现文件的复制。例如,将source.txt文件复制到destination.txt,代码如下:
import shutil
import ossource_file ='source.txt'
destination_file = 'destination.txt'
if os.path.isfile(source_file):shutil.copy(source_file, destination_file)print(f"{source_file} 已复制到 {destination_file}")
else:print(f"{source_file} 不存在")
对于目录的复制,shutil.copytree()函数可以递归地复制整个目录及其内容。比如,将source_dir目录及其所有子目录和文件复制到destination_dir,代码如下:
import shutil
import ossource_dir ='source_dir'
destination_dir = 'destination_dir'
if os.path.isdir(source_dir):shutil.copytree(source_dir, destination_dir)print(f"{source_dir} 已复制到 {destination_dir}")
else:print(f"{source_dir} 不存在")
在文件和目录的移动操作上,shutil.move()函数可以实现移动功能,结合os模块判断源路径和目标路径的有效性,能够确保移动操作的顺利进行。例如,将test.txt文件移动到new_dir目录下,代码如下:
import shutil
import ossource_file = 'test.txt'
destination_dir = 'new_dir'
if os.path.isfile(source_file) and os.path.isdir(destination_dir):destination_path = os.path.join(destination_dir, os.path.basename(source_file))shutil.move(source_file, destination_path)print(f"{source_file} 已移动到 {destination_path}")
else:print("源文件或目标目录不存在")
四、os 模块应用实战
4.1 自动化脚本编写
在日常工作中,我们常常会遇到一些重复性的文件操作任务,如文件备份、批量重命名等。利用 Python 的os模块,我们可以轻松编写自动化脚本,提高工作效率。
文件备份脚本:假设我们需要定期备份一个重要的项目文件夹,使用os模块结合shutil模块来实现。首先,我们要确定源文件夹和目标备份文件夹的路径。然后,使用os.walk()函数遍历源文件夹及其子文件夹中的所有文件,再利用shutil.copy2()函数将文件复制到目标备份文件夹中,shutil.copy2()函数会保留文件的原始属性,如修改时间、权限等。代码示例如下:
import os
import shutil
import time# 源文件夹路径
source_folder = '/path/to/source/folder'
# 备份文件夹路径,使用当前日期作为备份文件夹的子目录名
backup_folder = '/path/to/backup/folder/' + time.strftime('%Y%m%d')# 如果备份文件夹不存在,则创建它
if not os.path.exists(backup_folder):os.makedirs(backup_folder)for root, dirs, files in os.walk(source_folder):for file in files:source_file = os.path.join(root, file)relative_path = os.path.relpath(source_file, source_folder)destination_file = os.path.join(backup_folder, relative_path)destination_dir = os.path.dirname(destination_file)if not os.path.exists(destination_dir):os.makedirs(destination_dir)shutil.copy2(source_file, destination_file)
在上述代码中,通过os.walk()函数递归地遍历source_folder目录树,对于每一个文件,先获取其相对路径,然后构建目标备份路径。如果目标路径中的目录不存在,使用os.makedirs()函数创建,最后使用shutil.copy2()函数完成文件的复制备份。
批量重命名脚本:当我们需要对一个文件夹中的大量文件进行重命名时,手动操作既繁琐又容易出错。借助os模块可以轻松实现批量重命名。例如,将一个文件夹中的所有图片文件按照顺序重新命名,代码如下:
import os# 图片文件夹路径
image_folder = '/path/to/image/folder'
# 获取文件夹中的所有文件
files = os.listdir(image_folder)# 过滤出图片文件(假设只有.jpg格式)
image_files = [f for f in files if f.endswith('.jpg')]# 按文件名排序
image_files.sort()# 重命名文件
for i, file_name in enumerate(image_files):# 构建新的文件名new_name = f'image_{i + 1}.jpg'# 构建完整路径old_path = os.path.join(image_folder, file_name)new_path = os.path.join(image_folder, new_name)# 重命名文件os.rename(old_path, new_path)
在这段代码中,首先使用os.listdir()函数获取文件夹中的所有文件,然后通过列表推导式过滤出以.jpg结尾的图片文件,并对其进行排序。接着,使用os.rename()函数对每个图片文件进行重命名,新的文件名按照image_序号.jpg的格式生成。
4.2 系统监控与管理
os模块不仅在文件操作方面表现出色,还可以用于实现简单的系统监控功能,帮助我们实时了解系统的运行状态,及时发现并解决潜在问题。
磁盘空间监测:通过os.statvfs()函数可以获取文件系统的状态信息,从而计算出磁盘的总空间、已使用空间和剩余空间。例如,监测系统根目录的磁盘空间使用情况,代码如下:
import osdisk_info = os.statvfs('/')
# 总空间,单位为字节
total_space = disk_info.f_bsize * disk_info.f_blocks
# 剩余空间,单位为字节
free_space = disk_info.f_bsize * disk_info.f_bfree
# 已使用空间,单位为字节
used_space = total_space - free_space# 将空间大小转换为GB并保留两位小数
total_gb = total_space / (1024 ** 3)
free_gb = free_space / (1024 ** 3)
used_gb = used_space / (1024 ** 3)print(f"磁盘总空间: {total_gb:.2f} GB")
print(f"已使用空间: {used_gb:.2f} GB")
print(f"剩余空间: {free_gb:.2f} GB")
在上述代码中,os.statvfs(‘/’)获取根目录的文件系统状态信息,f_bsize表示文件系统块大小,f_blocks表示文件系统数据块总数,f_bfree表示可用的数据块数。通过这些信息计算出总空间、剩余空间和已使用空间,并将其转换为 GB 单位进行输出。
进程状态查看:在 Unix - like 系统中,可以通过遍历/proc目录来查看系统中所有进程的信息。/proc目录是一个虚拟文件系统,它提供了关于系统内核和进程的信息。每个进程在/proc目录下都有一个以其进程 ID(PID)命名的子目录,其中包含了该进程的相关信息,如cmdline文件记录了进程的命令行参数。以下是一个简单的示例,用于列出当前系统中所有进程的 PID 和进程名:
import osdef get_all_processes():processes = []for pid in os.listdir('/proc'):if pid.isdigit():try:with open(f'/proc/{pid}/cmdline', 'rb') as f:cmdline = f.read().decode().replace('\x00', ' ')if cmdline:processes.append((int(pid), cmdline))except IOError:continuereturn processesall_processes = get_all_processes()
for pid, name in all_processes:print(f'PID: {pid} | 进程名: {name}')
在这个脚本中,首先遍历/proc目录下的所有子目录,判断子目录名是否为数字(即是否为有效的 PID)。对于每个有效的 PID,尝试打开其对应的cmdline文件,读取并解码文件内容,去除其中的空字符\x00,将进程的 PID 和进程名添加到processes列表中,最后遍历该列表并打印出每个进程的 PID 和进程名。
五、总结与展望
Python 3 的os模块为我们提供了丰富且强大的功能,涵盖了文件与目录操作、系统信息获取、环境变量管理以及进程管理等多个方面,成为 Python 编程中与操作系统交互的重要桥梁。通过os模块,我们可以轻松实现文件和目录的创建、读取、删除、重命名等基础操作,还能获取系统的各类信息,如操作系统类型、当前工作目录、环境变量等,为程序的运行提供必要的上下文信息 。
在实际应用中,os模块广泛应用于自动化脚本编写、系统监控与管理、数据处理等领域。例如,在自动化脚本编写中,利用os模块可以实现文件的批量处理、目录结构的自动创建与管理,大大提高工作效率;在系统监控方面,通过os模块获取系统资源使用情况、进程状态等信息,有助于及时发现系统问题并进行优化 。
展望未来,随着计算机技术的不断发展,操作系统的功能日益丰富和复杂,os模块也将不断演进和完善,为开发者提供更便捷、高效的操作系统交互接口。在大数据和人工智能领域,os模块将在数据存储、管理和处理过程中发挥重要作用,帮助开发者更好地管理和操作大规模的数据文件和目录。在云计算和容器化技术中,os模块也将为容器的创建、管理和资源分配提供支持,助力实现高效的云应用部署和管理 。
对于广大 Python 开发者来说,深入学习和掌握os模块的使用方法,不仅能够提升编程能力,还能为解决实际问题提供更多的思路和方法。希望读者通过本文的介绍,对os模块有更深入的了解和认识,并在实际编程中不断探索和实践,充分发挥os模块的强大功能 。
相关文章:
【Python深入浅出】Python3中os模块:开启系统交互的万能钥匙
目录 一、引言:os 模块初印象二、os 模块基础操作2.1 文件与目录操作2.1.1 创建操作2.1.2 读取操作2.1.3 删除操作2.1.4 信息获取 2.2 系统信息获取与环境变量管理2.2.1 系统信息获取2.2.2 环境变量管理 2.3 进程管理与工作目录操作2.3.1 进程管理2.3.2 工作目录操作…...
【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案
建筑设计公司在项目执行过程中,会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。 操作需求:为了方便内部管理和向客户交付完整的设计方案,公司需要将每个项目文件…...
在Linux上如何让ollama在GPU上运行模型
之前一直在 Mac 上使用 ollama 所以没注意,最近在 Ubuntu 上运行发现一直在 CPU 上跑。我一开始以为是超显存了,因为 Mac 上如果超内存的话,那么就只用 CPU,但是我发现 Llama3.2 3B 只占用 3GB,这远没有超。看了一下命…...
程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<8>
大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们复习前面学习的指针知识 目录 关于指针数组和数组指针的区别指针数组(Array of Poi…...
快速集成DeepSeek到项目
DeepSeek API-KEY 获取 登录DeekSeek 官网,进入API 开放平台 2. 创建API-KEY 复制API-KEY进行保存,后期API调用使用 项目中集成DeepSeek 这里只展示部分核心代码,具体请查看源码orange-ai-deepseek-biz-starter Slf4j AllArgsConstructo…...
DeepSeek做赛车游戏
赛车模型 2D生成图片 任意AI图片软件SD,MJ 图片生成3D模型 车身 车轮 场景 Rodin,Tripo和Meshy 询问deepSeek如何开发 拷贝代码 将汽车运行代码拖到汽车上 再让AI写个摄像头跟随代码 再去提问deepseek控制轮胎和一些处理细节...
未来替代手机的产品,而非手机的本身
替代手机的产品包括以下几种: 可穿戴设备:智能手表、智能眼镜等可穿戴设备可以提供类似手机的功能,如通话、信息推送、浏览网页等。 虚拟现实(VR)技术:通过佩戴VR头显,用户可以进行语音通话、发…...
uniapp开发微信小程序请求超时设置【亲测有效】
在Hbuilderx中 使用uniapp开发微信小程序时 封装请求方法 请求代码如下 function requestFun(app) {// get请求app.config.globalProperties._get function(path, data, success, fail, complete) {data data || {};data.token uni.getStorageSync(token) || ;uni.request…...
Repmgr管理PostgreSQL服务器集群笔记
目录 Repmgr管理PostgreSQL服务器集群笔记一、概述(一)主要工具(二)用户和元数据 二、准备工作(一)基本环境(二)PostgreSQL用户创建、目录规划(三)互信配置&a…...
deepseek本地部署-linux
1、官网推荐安装方法(使用脚本,我绕不过github,未采用) 登录ollama下载网站https://ollama.com/download/linux,linux下有下载脚本。 正常来说,在OS系统下直接执行脚本即可。 2、手动安装方法 2.1获取ol…...
vite + axios 代理不起作用 404 无效
vite axios 代理不起作用 先看官方示例 export default defineConfig({server: {proxy: {// 字符串简写写法/foo: http://localhost:4567,// 选项写法/api: {target: http://jsonplaceholder.typicode.com,changeOrigin: true,rewrite: (path) > path.replace(/^\/api/, )…...
【Linux】从零开始:编写你的第一个Linux进度条小程序
Linux相关知识点可以通过点击以下链接进行学习一起加油!初识指令指令进阶权限管理yum包管理与vim编辑器GCC/G编译器make与Makefile自动化构建GDB调试器与Git版本控制工具 🌈个人主页:是店小二呀 🌈C语言专栏:C语言 &am…...
【办公类-53-04】20250209Python模仿制作2024学年第二学期校历
背景需求: 马上开学了,又要制作校历(删划节假日)。之前我都是用网络的图片,然后在PPT里修改。 存在问题: 网络校历是从周日开始的,但日常我们老师做教案,都是默认从周一到周五&…...
11vue3实战-----封装缓存工具
11vue3实战-----封装缓存工具 1.背景2.pinia的持久化思路3.以localStorage为例解决问题4.封装缓存工具 1.背景 在上一章节,实现登录功能时候,当账号密码正确,身份验证成功之后,把用户信息保存起来,是用的pinia。然而p…...
Unity 基础编程
在这个练习中将新建unity脚本,控制player的运动与转动,实现用代码检测碰撞与删除物体。 该练习将应用附件中的项目文件,该文件与Unity快速练习的文件是同一个项目文件。 一、构建Player运动脚本 该部分将构建一个在场景中由玩家控制游戏物…...
Spring Boot接入Deep Seek的API
1,首先进入deepseek的官网:DeepSeek | 深度求索,单击右上角的API开放平台。 2,单击API keys,创建一个API,创建完成务必复制!!不然关掉之后会看不看api key!!&…...
介绍下SpringBoot常用的依赖项
Spring Boot 是一个用于快速开发 Spring 应用程序的框架,它通过自动配置和依赖管理简化了开发过程。以下是一些 Spring Boot 项目中常用的依赖项: 1. Spring Boot Starter Web 作用: 用于构建 Web 应用程序,包括 RESTful 服务。依赖项: spr…...
解决 keep-alive 缓存组件中定时器干扰问题
当使用 keep-alive 缓存组件时,组件中的定时器可能会在组件被缓存后继续运行,从而干扰其他组件的逻辑。为了避免这种情况,可以通过以下方法解决: 1. 在组件的 deactivated 钩子中清理定时器 keep-alive 为缓存的组件提供了 acti…...
PostgreSQL插件-pg_stat_statements-安装和使用
文章目录 插件介绍插件安装1.修改配置文件postgresql.conf2.插件相关参数参数默认值参数说明特别注意pg_stat_statements.max参数设置太小日志会有警告 插件使用1.创建插件2.使用插件3.重置数据4.删除插件 可能会出现的问题1.没有编译安装插件2.没有配置shared_preload_librari…...
flutter安卓打包签名
flutter安卓打包签名 1.创建签名文件 keytool -genkeypair -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-aliaskeytool 是一个用于管理密钥和证书的命令行工具,通常与 Java 开发工具包 (JDK) 一起使用。my-release-…...
从Word里面用VBA调用NVIDIA的免费DeepSeekR1
看上去能用而已。 选中的文字作为输入,运行对应的宏即可;会先MSGBOX提示一下,然后相关内容追加到word文档中。 需要自己注册生成好用的apikey Option ExplicitSub DeepSeek()Dim selectedText As StringDim apiKey As StringDim response A…...
JavaScript 中的防抖和节流,它们的区别是什么,以及如何实现?
在前端开发中,防抖(Debounce)和节流(Throttle)是两种常用的优化高频率事件处理的技术。 它们能够有效减少事件处理函数的执行次数,从而提升页面性能和用户体验。 下面将详细解释这两种技术的概念、区别、…...
【Kubernetes的SpringCloud最佳实践】Spring Cloud netflix 能否被K8s资源完全替代?
在部署Spring Cloud微服务到Kubernetes(K8s)时, Spring Cloud netflix 是否需要完全替代?或者可以部分替代,结合使用? 例如,服务发现和负载均衡可以交给K8s处理, 但某些功能如API网关…...
MATLAB中extract 函数用法
目录 语法 说明 示例 从地址中提取邮政编码 提取在数值位置处的字符 extract函数的功能是从字符串中提取子字符串。 语法 newStr extract(str,pat) newStr extract(str,pos) 说明 newStr extract(str,pat) 返回 str 中与 pat 指定的模式匹配的任何子字符串。 如果 s…...
DeepSeek-V3:开源多模态大模型的突破与未来
目录 引言 一、DeepSeek-V3 的概述 1.1 什么是 DeepSeek-V3? 1.2 DeepSeek-V3 的定位 二、DeepSeek-V3 的核心特性 2.1 多模态能力 2.2 开源与可扩展性 2.3 高性能与高效训练 2.4 多语言支持 2.5 安全与伦理 三、DeepSeek-V3 的技术架构 3.1 模型架构 3…...
C语言学习笔记:子函数的调用实现各个位的累加和
在C语言程序学习之初,我们都会学习如何打印 hello world,在学习时我们知道了int main()是主函数,程序从main函数开始执行,这是流程控制的一部分内容。在主函数中我们想要实现一些功能,比如求各个…...
docker安装ollama显示超时或失败
正常安装 1、拉取ollma镜像 docker pull ollama/ollama or docker pull docker.1panel.live/ollama/ollama2、运行ollma镜像 docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama3、运行指定大模型:模型仓库参考网站: library (ollama.com…...
grafana面板配置opentsdb
新增面板: 这里add-panel: 如果不是想新增面板而是想新增一行条目,则点击convert to row: 在新增的面板这里可以看到选择数据源 Aggregator:聚合条件,区分下第一行和第二行的aggregator,第一个是对指标值的聚合&…...
iOS AES/CBC/CTR加解密以及AES-CMAC
感觉iOS自带的CryptoKit不好用,有个第三方库CryptoSwift还不错,好巧不巧,清理过Xcode缓存后死活下载不下来,当然也可以自己编译个Framework,但是偏偏不想用第三方库了,于是研究了一下,自带的Com…...
使用Jenkins实现鸿蒙HAR应用的自动化构建打包
使用Jenkins实现鸿蒙HAR应用的自动化构建打包 在软件开发领域,自动化构建是提高开发效率和确保代码质量的重要手段。特别是在鸿蒙(OpenHarmony)应用开发中,自动化构建更是不可或缺。本文将详细介绍如何使用Jenkins命令行工具实现…...
