深入探讨Python中的os模块:基础大总结与实战【第109篇—os模块】

深入探讨Python中的os模块:基础大总结与实战

在Python编程中,操作系统(os)模块是一个强大的工具,它提供了与操作系统交互的各种功能,使得开发者能够轻松地执行文件和目录操作、获取系统信息以及执行系统命令。在本篇技术博客中,我们将深入研究os模块的基础知识,并通过实际代码示例演示其强大的功能。

IMG_20231006_130640

1. os模块基础知识

1.1 os模块简介

os模块是Python标准库中的一部分,提供了一种与操作系统进行交互的方法。主要功能包括文件和目录的操作、路径处理、进程管理等。在使用os模块之前,我们需要先导入它:

import os

1.2 常用os模块函数

1.2.1 文件和目录操作
  • os.getcwd(): 获取当前工作目录。
  • os.chdir(path): 改变当前工作目录。
  • os.listdir(path='.'): 返回指定目录下的所有文件和目录列表。
1.2.2 路径处理
  • os.path.join(path, *paths): 将多个路径组合成一个路径。
  • os.path.abspath(path): 返回path的绝对路径。
  • os.path.exists(path): 判断路径是否存在。
  • os.path.isfile(path): 判断路径是否为文件。
  • os.path.isdir(path): 判断路径是否为目录。
1.2.3 系统命令执行
  • os.system(command): 在系统 shell 中执行命令。

2. 代码实战:文件操作与路径处理

2.1 获取当前工作目录并改变工作目录

import os

# 获取当前工作目录
current_directory = os.getcwd()
print("当前工作目录:", current_directory)

# 改变工作目录
os.chdir('/path/to/new/directory')
print("新工作目录:", os.getcwd())

2.2 遍历指定目录下的文件和目录

import os

def list_files_and_directories(directory):
    print(f"目录 {directory} 下的文件和目录:")
    for item in os.listdir(directory):
        item_path = os.path.join(directory, item)
        if os.path.isfile(item_path):
            print(f"文件: {item_path}")
        elif os.path.isdir(item_path):
            print(f"目录: {item_path}")

# 指定目录
target_directory = '/path/to/target/directory'
list_files_and_directories(target_directory)

2.3 判断路径是否存在并获取绝对路径

import os

def check_and_get_absolute_path(path):
    if os.path.exists(path):
        absolute_path = os.path.abspath(path)
        print(f"路径 {path} 存在,绝对路径为: {absolute_path}")
    else:
        print(f"路径 {path} 不存在")

# 指定路径
target_path = '/path/to/some/file_or_directory'
check_and_get_absolute_path(target_path)

4. 进一步的实战:系统命令执行与异常处理

4.1 执行系统命令并获取输出

os.system(command)函数可以执行系统命令,但它无法获取命令的输出。为了更灵活地处理系统命令,我们可以使用subprocess模块。

import subprocess

def execute_system_command(command):
    try:
        result = subprocess.run(command, shell=True, check=True, stdout=subprocess.PIPE, text=True)
        print(f"命令执行结果:\n{result.stdout}")
    except subprocess.CalledProcessError as e:
        print(f"命令执行失败,错误信息: {e.stderr}")

# 示例:执行系统命令 'ls -l'(列出当前目录下的文件和目录)
execute_system_command('ls -l')

4.2 异常处理与错误信息

在实际应用中,可能会遇到文件不存在、权限不足等问题。因此,合理的异常处理对于保障程序的稳定运行非常重要。

import os

def file_operation_with_exception_handling(file_path):
    try:
        with open(file_path, 'r') as file:
            content = file.read()
            print(f"文件内容:\n{content}")
    except FileNotFoundError:
        print(f"文件 {file_path} 不存在")
    except PermissionError:
        print(f"无权限读取文件 {file_path}")
    except Exception as e:
        print(f"发生未知错误: {e}")

# 示例:读取文件内容并处理异常
target_file = '/path/to/some/file.txt'
file_operation_with_exception_handling(target_file)

6. 进阶应用:递归遍历文件夹与路径规范化

6.1 递归遍历文件夹

os模块还提供了递归遍历文件夹的方法,使得我们能够方便地获取文件夹内所有文件和子文件夹。

import os

def recursive_list_files(directory):
    for root, dirs, files in os.walk(directory):
        for file in files:
            file_path = os.path.join(root, file)
            print(f"文件: {file_path}")

# 示例:递归遍历目录 '/path/to/target/directory'
target_directory = '/path/to/target/directory'
recursive_list_files(target_directory)

6.2 路径规范化

使用os.path.normpath(path)函数可以规范化路径,消除路径中的双斜杠、解析相对路径等问题。

import os

def normalize_path(path):
    normalized_path = os.path.normpath(path)
    print(f"原始路径: {path}")
    print(f"规范化路径: {normalized_path}")

# 示例:规范化路径 '/path/to/../target/directory'
target_path = '/path/to/../target/directory'
normalize_path(target_path)

7. 高级应用:环境变量与进程管理

7.1 获取环境变量

通过os.environ字典,我们能够轻松获取系统的环境变量。

import os

def get_environment_variables():
    print("环境变量:")
    for key, value in os.environ.items():
        print(f"{key}: {value}")

# 示例:获取系统环境变量
get_environment_variables()

7.2 进程管理

os模块也提供了一些基本的进程管理功能,如os.spawn*系列函数。

import os

def execute_command_in_new_process(command):
    new_process_id = os.spawnlp(os.P_NOWAIT, '/bin/sh', 'sh', '-c', command)
    print(f"新进程已创建,进程ID: {new_process_id}")

# 示例:在新进程中执行命令 'echo "Hello, os module!"'
execute_command_in_new_process('echo "Hello, os module!"')

通过深入研究os模块的高级应用,我们拓展了对其功能的认识,包括递归遍历文件夹、路径规范化、环境变量获取以及基本的进程管理。这些功能为Python开发者在操作系统层面进行更深入、更灵活的操作提供了便利。

在实际项目中,结合os模块的高级功能,我们可以更好地处理复杂的文件结构、规范化路径、获取系统信息等任务。同时,进一步了解与os模块相关的模块,如subprocessshutil等,将有助于提高代码的效率和可维护性。

希望本文能够帮助读者更全面地了解和应用os模块,使其在Python开发中更加得心应手。在未来的学习中,建议深入研究相关模块,挖掘更多强大的功能,提高自己在系统级编程方面的水平。

9. 拓展应用:文件和目录的创建、删除与复制

9.1 创建目录与文件

os模块提供了创建目录和文件的方法,分别为os.mkdir(path)os.makedirs(path)。其中,os.makedirs()能够递归创建多层目录。

import os

def create_directory_and_file(directory_path, file_path):
    # 创建目录
    os.makedirs(directory_path, exist_ok=True)
    print(f"目录 '{directory_path}' 已创建")

    # 创建文件
    with open(file_path, 'w') as file:
        file.write("Hello, os module!")
        print(f"文件 '{file_path}' 已创建")

# 示例:创建目录 '/path/to/new/directory' 和文件 '/path/to/new/directory/example.txt'
new_directory = '/path/to/new/directory'
new_file = '/path/to/new/directory/example.txt'
create_directory_and_file(new_directory, new_file)

9.2 删除目录与文件

通过os.remove(path)os.rmdir(path)可以删除文件和目录,分别对应删除文件和删除空目录的操作。若要删除非空目录,可以使用shutil.rmtree(path)

import os
import shutil

def delete_directory_and_file(directory_path, file_path):
    # 删除文件
    os.remove(file_path)
    print(f"文件 '{file_path}' 已删除")

    # 删除目录
    os.rmdir(directory_path)
    print(f"目录 '{directory_path}' 已删除")

# 示例:删除目录 '/path/to/new/directory' 和文件 '/path/to/new/directory/example.txt'
delete_directory_and_file(new_directory, new_file)

9.3 复制文件与目录

shutil模块提供了复制文件和目录的方法,分别为shutil.copy(src, dst)shutil.copytree(src, dst)

import shutil

def copy_directory_and_file(source_path, destination_path):
    # 复制文件
    shutil.copy(source_path, destination_path)
    print(f"文件 '{source_path}' 已复制到 '{destination_path}'")

    # 复制目录
    shutil.copytree(new_directory, '/path/to/copied/directory')
    print(f"目录 '{new_directory}' 已复制到 '/path/to/copied/directory'")

# 示例:复制文件 '/path/to/new/directory/example.txt' 和目录 '/path/to/new/directory'
copy_directory_and_file(new_file, '/path/to/copied/directory/example_copied.txt')

11. 安全性与异常处理加强

11.1 安全性考虑

在文件和目录操作中,安全性是至关重要的。在使用os模块进行文件和目录操作时,务必谨慎处理用户输入,以防止潜在的安全漏洞。使用绝对路径、验证文件/目录是否存在,以及合理使用异常处理都是确保安全性的关键步骤。

import os

def safe_file_operation(file_path):
    try:
        # 获取文件的绝对路径
        absolute_path = os.path.abspath(file_path)

        # 确保文件存在
        if os.path.exists(absolute_path) and os.path.isfile(absolute_path):
            with open(absolute_path, 'r') as file:
                content = file.read()
                print(f"文件内容:\n{content}")
        else:
            print(f"文件 {absolute_path} 不存在或不是文件")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:安全地读取文件内容
unsafe_path = '/path/to/some/file/../../malicious_file.txt'
safe_file_operation(unsafe_path)

11.2 异常处理进阶

对于文件和目录操作,更细致的异常处理可以帮助我们更好地理解问题。例如,当涉及到文件读写时,我们可能会遇到UnicodeDecodeError等异常,需要有相应的处理方式。

import os

def advanced_exception_handling(file_path):
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            content = file.read()
            print(f"文件内容:\n{content}")
    except FileNotFoundError:
        print(f"文件 {file_path} 不存在")
    except PermissionError:
        print(f"无权限读取文件 {file_path}")
    except UnicodeDecodeError:
        print(f"文件 {file_path} 包含非UTF-8编码的内容")
    except Exception as e:
        print(f"发生未知错误: {e}")

# 示例:高级异常处理,读取文件内容
problematic_file = '/path/to/some/problematic_file.txt'
advanced_exception_handling(problematic_file)

12. Python 3.8+ 的 pathlib 模块

在Python 3.4及以后的版本中,引入了pathlib模块,提供了更面向对象的路径操作方式。这种方式更加直观和安全,建议在新项目中优先使用pathlib

from pathlib import Path

def pathlib_example(file_path):
    try:
        # 创建Path对象
        path = Path(file_path)

        # 读取文件内容
        content = path.read_text(encoding='utf-8')
        print(f"文件内容:\n{content}")
    except FileNotFoundError:
        print(f"文件 {path} 不存在")
    except PermissionError:
        print(f"无权限读取文件 {path}")
    except UnicodeDecodeError:
        print(f"文件 {path} 包含非UTF-8编码的内容")
    except Exception as e:
        print(f"发生未知错误: {e}")

# 示例:使用pathlib读取文件内容
pathlib_example(problematic_file)

14. 文件和目录权限管理

在实际应用中,我们经常需要处理文件和目录的权限。os模块和pathlib模块提供了一些基本的权限管理方法,同时,使用shutil模块中的函数也能有效地处理复制时的权限。

14.1 修改文件和目录权限

使用os模块中的os.chmod(path, mode)函数可以修改文件或目录的权限。mode参数是一个数字,代表新的权限。

import os

def change_file_permissions(file_path, new_mode):
    try:
        os.chmod(file_path, new_mode)
        print(f"文件 {file_path} 权限已修改为 {new_mode:o}")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:修改文件权限为可读写
sample_file = '/path/to/some/sample_file.txt'
change_file_permissions(sample_file, 0o600)

14.2 复制文件时保留权限

在使用shutil模块的shutil.copy(src, dst)函数复制文件时,默认情况下,会保留文件的权限信息。

import shutil

def copy_file_preserving_permissions(source_path, destination_path):
    try:
        shutil.copy(source_path, destination_path)
        print(f"文件 '{source_path}' 已复制到 '{destination_path}',并保留了权限")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:复制文件并保留权限
source_file = '/path/to/source_file.txt'
destination_file = '/path/to/destination_file.txt'
copy_file_preserving_permissions(source_file, destination_file)

14.3 使用pathlib管理权限

pathlib模块中,Path对象也提供了chmod(mode)方法,用于修改文件或目录的权限。

from pathlib import Path

def pathlib_change_permissions(file_path, new_mode):
    try:
        path = Path(file_path)
        path.chmod(new_mode)
        print(f"文件 {file_path} 权限已修改为 {new_mode:o}")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:使用pathlib修改文件权限
pathlib_change_permissions(sample_file, 0o644)

15. 文件和目录的时间戳管理

对于文件和目录,系统维护着三个时间戳:访问时间(atime)、修改时间(mtime)和状态改变时间(ctime)。os模块和pathlib模块提供了获取和修改这些时间戳的方法。

15.1 获取时间戳

使用os.path.getatime(path)os.path.getmtime(path)os.path.getctime(path)可以获取文件或目录的访问、修改和状态改变时间戳。

import os

def get_timestamps(file_path):
    try:
        atime = os.path.getatime(file_path)
        mtime = os.path.getmtime(file_path)
        ctime = os.path.getctime(file_path)

        print(f"文件 {file_path} 的时间戳信息:")
        print(f"访问时间: {atime}")
        print(f"修改时间: {mtime}")
        print(f"状态改变时间: {ctime}")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:获取文件时间戳信息
timestamp_file = '/path/to/timestamp_file.txt'
get_timestamps(timestamp_file)

15.2 修改时间戳

使用os.utime(path, (atime, mtime))可以修改文件或目录的访问和修改时间戳。

import os

def set_timestamps(file_path, new_atime, new_mtime):
    try:
        os.utime(file_path, (new_atime, new_mtime))
        print(f"文件 {file_path} 的访问和修改时间戳已修改")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:修改文件访问和修改时间戳
set_timestamps(timestamp_file, 1644019200, 1644105600)

15.3 使用pathlib管理时间戳

pathlib模块中,Path对象提供了stat()方法,返回一个os.stat_result对象,其中包含了访问、修改和状态改变时间戳等信息。

from pathlib import Path

def pathlib_get_timestamps(file_path):
    try:
        path = Path(file_path)
        stat_info = path.stat()

        print(f"文件 {file_path} 的时间戳信息:")
        print(f"访问时间: {stat_info.st_atime}")
        print(f"修改时间: {stat_info.st_mtime}")
        print(f"状态改变时间: {stat_info.st_ctime}")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:使用pathlib获取文件时间戳信息
pathlib_get_timestamps(timestamp_file)

17. 目录压缩与解压缩

在实际应用中,我们常常需要对目录进行压缩和解压缩,以便于文件传输、备份等需求。Python中的shutil模块和第三方库zipfile提供了相关的功能。

17.1 压缩目录

使用shutil模块的shutil.make_archive(base_name, format, root_dir)函数可以将目录压缩为指定格式的归档文件。常见的格式包括ziptar等。

import shutil

def compress_directory(directory_path, output_path, format='zip'):
    try:
        shutil.make_archive(output_path, format, root_dir=directory_path)
        print(f"目录 '{directory_path}' 已压缩到 '{output_path}.{format}'")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:压缩目录 '/path/to/compress' 到 '/path/to/compressed_archive.zip'
compress_directory('/path/to/compress', '/path/to/compressed_archive', 'zip')

17.2 解压缩目录

使用shutil模块的shutil.unpack_archive(filename, extract_dir)函数可以将归档文件解压缩到指定目录。

import shutil

def decompress_archive(archive_path, extract_path):
    try:
        shutil.unpack_archive(archive_path, extract_path)
        print(f"归档文件 '{archive_path}' 已解压缩到 '{extract_path}'")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:解压缩 '/path/to/compressed_archive.zip' 到 '/path/to/extracted'
decompress_archive('/path/to/compressed_archive.zip', '/path/to/extracted')

17.3 使用zipfile库进行更灵活的操作

zipfile库提供了更灵活的方式进行压缩和解压缩,可以逐个文件添加、删除等。

import zipfile
import os

def compress_directory_zipfile(directory_path, output_path):
    try:
        with zipfile.ZipFile(output_path, 'w') as zip_file:
            for root, dirs, files in os.walk(directory_path):
                for file in files:
                    file_path = os.path.join(root, file)
                    arc_name = os.path.relpath(file_path, directory_path)
                    zip_file.write(file_path, arcname=arc_name)
        print(f"目录 '{directory_path}' 已使用zipfile压缩到 '{output_path}'")
    except Exception as e:
        print(f"发生错误: {e}")

# 示例:使用zipfile压缩目录 '/path/to/compress' 到 '/path/to/compressed_archive_zipfile.zip'
compress_directory_zipfile('/path/to/compress', '/path/to/compressed_archive_zipfile.zip')

在实际应用中,选择适合场景的方式进行目录的压缩和解压缩操作,可以根据需求使用shutil模块或zipfile库。希望通过这部分内容,读者能够更加熟练地进行文件和目录的压缩解压缩操作。

总结

本文深入探讨了Python中os模块的基础知识和高级应用,以及相关的安全性、异常处理、权限管理、时间戳处理、目录压缩与解压缩等方面的技术。以下是本文的主要内容总结:

  1. 基础知识和常用函数: 学习了os模块的基础知识,包括文件和目录操作、路径处理、系统命令执行等,通过代码实例演示了其常用函数。

  2. 文件和目录的管理: 涵盖了文件和目录的创建、删除、复制、遍历、规范化等操作,通过实战示例展示了这些操作的灵活应用。

  3. 异常处理与安全性考虑: 加强了对异常处理的理解,结合文件操作,介绍了如何安全地处理文件和目录,避免潜在的安全漏洞。

  4. 进阶应用: 拓展了os模块的功能,包括环境变量获取、进程管理、递归遍历目录、路径规范化等,以及pathlib模块的使用。

  5. 文件和目录的权限管理: 学习了如何修改文件和目录的权限,以及通过shutil模块和pathlib模块管理权限的方法。

  6. 文件和目录的时间戳管理: 探讨了获取和修改文件和目录的时间戳,介绍了pathlib模块的使用,以及如何使用os.utime进行时间戳的修改。

  7. 目录压缩与解压缩: 学习了使用shutil模块和zipfile库进行目录的压缩和解压缩,通过实例展示了不同的方式。

通过学习这些内容,读者将能够更全面地了解和应用os模块,提高在Python文件和目录操作方面的技能。同时,本文强调了在文件操作中的安全性、异常处理的重要性,以及一些高级应用的技巧。希望读者通过本文的指导,能够更加自信地处理文件和目录的操作,提高代码的可读性和可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/418759.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React中对表格实现列表的拖拽排序

1. 效果:推拽手柄列 2. 实现: react中我们需要两个包来实现 ‘array-move’‘react-sortable-hoc’Installation Use npm $ npm install react-sortable-hoc --save 引入 import { arrayMoveImmutable } from array-move import { SortableContainer, SortableElement, Sort…

具身智能计算系统,机器人时代的 Android | 新程序员

【导读】具身智能作为一种新兴的研究视角和方法论,正在刷新我们对智能本质及其发展的理解:传统的 AI 模型往往将智能视为一种独立于实体存在的抽象能力,而具身智能则主张智能是实体与其环境持续互动的结果。 本文深度剖析了具身智能计算系统…

Unity(第十六部)声音和视频

声音 1、听声音 创建相机的时候,相机自带Audio Listener 多个相机的时候,我们只保留一个Audio Listener就可以 2、声音源,环境音 添加Audio Source就行中文叫声音源 3、脚本执行的声音 using System.Collections; using System.Collection…

如何用ai智能写作?推荐5款优秀的AI写作神器

写作是件繁琐的事情,也是需要耗费精力和时间的,还好目前有了ai写作神器的出现,帮助我们解决了不少的写作难题。这些AI写作工具不仅可以帮助我们提高写作效率,还能够生成高质量的内容。在本文中,我将向你推荐5款优秀的A…

CentOS 定时调度

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

深度学习 精选笔记(7)前向传播、反向传播和计算图

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…

当无人机飞手真的有前途吗?无人机工作怎么找,感觉找不到太难了?无人机飞手未来的出路在哪里?

无人机飞手这个职业的前途很大程度上取决于市场需求和行业发展趋势。随着无人机技术的不断进步和应用领域的扩大,无人机飞手的需求量也在逐渐增加。然而,这个职业的发展也受到政策法规、技术更新换代等因素的影响,因此需要不断学习新技术和适…

Fastjson2 <== 2.0.26反序列漏洞

根据Y4TACKER师傅在2023-03-20发布了一篇关于Fastjson原生反序列化的文章,文章中引入注目的是利用条件限制条件,不常常关注漏洞预警或者内容的几乎都是未发觉Fastjson2 到Fastjson2 2.0.26版本都有问题,其实如果单独去使用一些关键词去搜索&a…

python 小游戏《2048》字符版非图形界面

参考链接: 闲谈2048小游戏和数组的旋转及翻转和转置 目录 2048 一、方阵类 二、随机插入1或2 三、 合并和递增 四、 判断和移动 五、 键盘控制 完整源代码 玩法过程 2048 上回说到2048小游戏中数组的各种旋转、翻转的方法,就是为代码编程作准…

单词规律00

题目链接 单词规律 题目描述 注意点 pattern只包含小写英文字母s只包含小写英文字母和 ’ ’s不包含任何前导或尾随对空格s中每个单词都被 单个空格 分隔 解答思路 本题与上一次同构字符串类似,思路可以参照同构字符串 代码 class Solution {public boolean …

C++——内存管理(new和delete)详解

目录 C/C内存管理 案例:变量在内存中到底会在哪? New和delete Operator new和operator delete函数 New和delete的原理 对内置类型 对自定义类型 定位new New/delete和malloc/free的区别 C/C内存管理 C/C内存管理分布图:(从…

C语言while 语句的基本格式是什么?

一、问题 C语⾔中有三种循环语句,while 语句是其中的⼀个,它的基本格式是怎样的呢? 二、解答 while 语句的⼀般形式为: while(表达式) 语句; 其中,表达式是循环条件,语句为循环体。 注意: …

uni-app 微信小程序:启用组件按需注入

原文地址:uni-app 微信小程序:启用组件按需注入 - 掘金 只需添加以下代码"lazyCodeLoading": "requiredComponents"

养娃到大学毕业要68万?不算不知道一算要起跳!

最近看到的新话题,第一反映就是养一个娃要这么多费用吗? 以我马上就要上大学的娃家长身份,索性粗针大线的做了一个预估,让我们一起来探讨一下吧: 现正在考虑娃是可以读国内正常的公办大学还是能读国内的合作办学大学…

【机器学习实战1】泰坦尼克号:灾难中的机器学习(一)数据预处理

🌸博主主页:釉色清风🌸文章专栏:机器学习实战🌸今日语录:不要一直责怪过去的自己,她曾经站在雾里也很迷茫。 🌼实战项目简介 本次项目是kaggle上的一个入门比赛 :Titani…

护眼灯到底有用吗知乎?5大超强实力护眼台灯测评推荐!

护眼台灯无疑是每个学子必备的学习用具,那到底有没有用呢?其实真正好的护眼灯在一定程度上对保护学生的眼睛来说肯定是有用的。当然前提是要选购到优质的护眼台灯,保障各项性能都是合格的,使用起来才安全放心。 一、护眼台灯是如何…

Python web框架fastapi数据库操作ORM(一)

文章目录 Fastapi ORM操作1、创建模型2、创建数据库连接配置文件3、启动项目4、根据模型类创建数据库表1. 初始化配置,只需要使用一次2. 初始化数据库,一般情况下只用一次3. 更新模型并进行迁移4. 重新执行迁移,写入数据库5. 回到上一个版本6…

uniapp+vue基于Android的图书馆借阅系统qb4y3-nodejs-php-pyton

uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 框架支持:springboot/django/php/Ssm/flask/express均支持 前端开发:vue 语言:pythonjavanode.jsphp均支持 运行软件:idea/eclip…

【Javascript编程实操01】判断最大数、奇偶数、是否成年

目录 前言 1、求两个数的最大数 代码: 实现效果: 2、判断一个整数是偶数还是奇数 代码: 实现效果: 3、判断一个人的年龄是否满18岁 代码: 实现效果: 总结 前言 从今天开始正式进入了Web前端第二…

GitLab--Merge Request 权限管理

场景 团队在日常开发工作中需要进行分支管理,通常使用feature分支进行开发,然后依次合并到dev分支、release分支,整个代码合并过程不仅仅是代码合并还需要对代码进行审核,如果在线下进行审核合并,这样操作无法保留痕迹…