lolicute

导航

python函数、文件操作、常用模块、模块与包介绍

1.函数
1.1 函数定义和声明

(1) 函数声明

def 函数名():
 # 函数体【功能代码块】

(2)函数调用

函数名()

1.2 函数参数
【1】位置参数

位置参数是按照定义时的顺序进行传递的参数。调用函数时,实参的位置必须与形参的位置一一对应。

【2】默认参数

默认参数是在函数声明时为参数指定默认值。如果在函数调用时没有传递该参数的值,函数将使用默认值。

【3】关键字参数

关键字参数是通过指定参数名来传递的参数。调用函数时,可以根据参数名来传递实参,而不必遵循形参的顺序。

【4】可变参数

可变数量参数允许函数接受不定数量的参数。在函数定义中,可以使用特殊符号来表示可变数量的参数,如*args用于接收任意数量的位置参数,**kwargs用于接收任意数量的关键字参数。

1.3 函数作用域
作用域(Scope)是指在程序中定义变量或函数时,这些变量或函数可被访问的范围。在不同的作用域中,变量和函数的可见性和访问性是不同的。

当访问一个变量时,Python 会按照 LEGB 的顺序进行查找,直到找到第一个匹配的变量,然后停止查找。如果在所有作用域中都找不到变量的定义,就会引发 NameError。

L(Local):局部作用域。包括函数内部定义的变量和参数。在函数内部最先进行变量查找。

E(Enclosing):嵌套函数的父函数的作用域。如果在当前函数内部找不到变量,就会向上一层嵌套的函数中查找。

G(Global):全局作用域。在模块层次定义的变量,对于整个模块都是可见的。

B(Built-in):内置作用域。包括 Python 的内置函数和异常。

1.4 函数返回值
函数的返回值是指函数执行完毕后,通过 return 语句返回给调用者的结果。

使用 return 语句可以将一个值或对象作为函数的返回值返回。这个返回值可以是任何有效的Python对象,例如数字、字符串、列表、字典等。函数执行到 return 语句时,会立即结束函数的执行,并将指定的返回值传递给调用者。

如果函内没有return,默认返回None,代表没有什么结果返回

1.5 常用的内置函数
map

map(函数名,数组) #作用是对数组中的每一个元素进行函数操作,然后重新写回数组中
filter

filter(函数名,数组) #作用是对数组中的每一个元素进行函数过滤,然后将过滤得到的内容重新写回数组中
sorted

sorted(数组,key=函数) #按照函数顺序进行排序

  1. 文件操作
    2.1 字符编码
    ASCII(American Standard Code for Information Interchange):ASCII 是最早的字符编码标准,使用 7 位二进制数(0-127)表示 128 个常用字符,包括英文字母、数字和一些常见的符号。ASCII 编码是单字节编码,每个字符占用一个字节的存储空间。

GBK(GuoBiao/Kuòbiāo):GBK 是中文编码标准,是国家标准 GB 2312 的扩展,支持汉字字符。GBK 使用双字节编码,其中一个字节表示高位,另一个字节表示低位,可以表示大约 21000 个汉字和其他字符。GBK 编码兼容 ASCII 编码,即 ASCII 字符可以用一个字节表示。

Unicode(统一码):Unicode 是一种字符编码标准,旨在为全球所有的字符提供唯一的标识符。它使用固定长度的编码单元表示字符,最常见的编码单元是 16 位(如 UTF-16)。Unicode 可以表示几乎所有语言的字符。

UTF-8(Unicode Transformation Format-8):UTF-8 是一种可变长度的 Unicode 编码标准,通过使用不同长度的字节序列来表示字符。UTF-8 是互联网上最常用的字符编码标准,因为它兼容 ASCII 编码,可以表示全球各种语言的字符。它使用 8 位字节编码,根据字符的不同范围使用不同长度的字节,ASCII 字符使用一个字节表示,而其他字符使用多个字节表示。

编码和解码是在字符编码过程中使用的两个关键概念。编码是将字符转换为特定编码标准下的二进制表示形式,而解码则是将二进制数据转换回字符形式。

在字符编码中,编码器用于将字符转换为相应编码标准下的二进制数据,而解码器用于将二进制数据转换回字符形式。编码和解码的过程是互逆的,可以通过相应的编码和解码算法进行转换。

2.2 文件读写操作
【1】读文件
file = open("example.txt", "r")  # 以只读模式打开文件
content = file.read()  # 读取整个文件内容
line = file.readline()  # 读取一行内容
lines = file.readlines()  # 读取所有行,并返回列表
file.close() # 关闭
【2】写文件
file = open("example.txt", "w")  # 以只写模式打开文件
file.write("Hello, World!")  # 向文件写入内容

Python 的文件对象中,不仅提供了 write() 函数,还提供了 writelines() 函数,可以实现将字符串列表写入文件中。

file.writelines(f.readlines())

file.close() # 关闭
注意,写入函数只有 write() 和 writelines() 函数,而没有名为 writeline 的函数。

【3】with open
任何一门编程语言中,文件的输入输出、数据库的连接断开等,都是很常见的资源管理操作。但资源都是有限的,在写程序时,必须保证这些资源在使用过后得到释放,不然就容易造成资源泄露,轻者使得系统处理缓慢,严重时会使系统崩溃。

例如,前面在介绍文件操作时,一直强调打开的文件最后一定要关闭,否则会程序的运行造成意想不到的隐患。但是,即便使用 close() 做好了关闭文件的操作,如果在打开文件或文件操作过程中抛出了异常,还是无法及时关闭文件。

为了更好地避免此类问题,不同的编程语言都引入了不同的机制。在Python中,对应的解决方式是使用 with as 语句操作上下文管理器(context manager),它能够帮助我们自动分配并且释放资源。

with open("example.txt", "r") as file:
   content = file.read()
   # 在这里进行文件操作,文件会在代码块结束后自动关闭
此外,还有其他文件操作函数和方法可供使用,例如重命名文件、删除文件等。

2.3 下载图片和视频(二进制保存wb)
import requests

案例1

爬虫

res = requests.get("https://pic.netbian.com/uploads/allimg/240112/001654-17049898140369.jpg")

print(res.content)

写文件

with open("美女.jpg","wb") as f:
   f.write(res.content)

案例2


res = requests.get("https://cdn2.zzzmh.cn/wallpaper/origin/96eaf850880911ebb6edd017c2d2eca2.jpg?response-content-disposition=attachment&auth_key=1709222400-05fa38359aefbdb5af319a5eaa8502dafc0c22eb-0-c606b2d504258a39b9c119184555c780")

with open("美女2.jpg","wb") as f:
   f.write(res.content)

2.4 openpyxl模块
打开工作簿:

import openpyxl

读取Excel文件

workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook['Sheet']

获取单元格数据

value = sheet['A1'].value
print(value)

value = sheet['B2'].value
print(value)

sheet['A7'].value = "飞驰人生2"

保存修改后的Excel文件

workbook.save('example.xlsx')
创建新的Excel工作簿

import openpyxl

创建新工作簿

workbook = openpyxl.Workbook()

获取默认工作表

sheet = workbook.active

(1) 写入数据到单元格

sheet['A1'] = 'Hello'
sheet['B1'] = 'World'

(2) 写入一行内容

sheet.append([1, 2, 3, 4, 5])

for i in range(100):
sheet.append([i, i ** 2, i ** 3, i ** 4])

保存工作簿

workbook.save('new_example.xlsx')
3 常用模块
3.1. random模块
random模块是Python的标准库之一,提供了生成伪随机数的功能。它包含了各种生成随机数的函数,以及随机选择和操作的工具函数。下面是random模块的一些常用函数和方法:

random():生成一个0到1之间的随机浮点数。

randint(a, b):生成一个指定范围内的随机整数,包括a和b。

choice(seq):从给定的序列中随机选择一个元素。

sample(seq, k):从给定序列中随机选择k个元素,返回一个新的列表。

shuffle(seq):随机打乱给定序列的顺序。

  1. time模块
    time模块是Python标准库中的一个模块,提供了与时间相关的功能和操作。它允许您获取当前时间、进行时间的格式化、进行时间的延迟等操作。下面是time模块的一些主要功能和函数:

获取当前时间:

time():返回从1970年1月1日午夜开始经过的秒数(Unix时间戳)。

时间延迟和暂停:

sleep(secs):暂停指定的秒数。

时间戳和时间元组互换:

localtime([secs]):将秒数转换为当前时区的struct_time对象。

mktime(t):将struct_time对象转换为秒数。

gmtime([secs]):将秒数转换为UTC时间的struct_time对象。

时间格式化:

strftime(format, t):将时间元组对象t按照指定的格式format进行格式化输出。

time模块中的函数返回的时间格式通常是以秒为单位的数值或struct_time对象。如果需要更高级的时间操作,可以考虑使用datetime模块,它提供了更多的时间处理功能。

  1. datetime模块
    datetime 模块是Python标准库中的一个模块,提供了处理日期和时间的功能。它建立在 time 模块的基础之上,提供了更高级的日期和时间操作。它提供了多个类和函数,用于创建、操作和格式化日期时间对象,以及执行日期时间的计算和比较。

下面是一些 datetime 模块中常用的功能:

(1)datetime类

datetime类是Python标准库中datetime模块中的一个重要类,用于表示日期和时间。它是一个组合了日期和时间的对象,提供了各种属性和方法来进行日期和时间的处理。下面是datetime类的一些主要属性和方法:

import datetime

(1) 获取datetime对象

datetime.datetime.now():返回当前的本地日期和时间。
datetime.datetime.today():返回当前日期的datetime对象(时间部分为0时0分0秒)

创建特定日期和时间的对象:

datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0):创建一个代表特定日期和时间的 datetime 对象。

(2) datetime对象属性:

datetime_obj.year:年份。
datetime_obj.month:月份。
datetime_obj.day:日期。
datetime_obj.hour:小时。
datetime_obj.minute:分钟。
datetime_obj.second:秒数。

(3) datetime对象和格式化字符串转换

datetime对象转为格式化字符串

current_datetime = datetime.datetime.now()
format = "%Y-%m-%d %H:%M:%S"
formatted_datetime = current_datetime.strftime(format)
print(formatted_datetime) # 输出:2022-01-01 12:30:45
print(type(formatted_datetime)) # 输出:<class 'str'>

时间字符串转为datetime对象

date_string = "2022-01-01 12:30:45"
format = "%Y-%m-%d %H:%M:%S"
parsed_datetime = datetime.datetime.strptime(date_string, format)
print(parsed_datetime) # 输出:2022-01-01 12:30:45
(2)date类

date类是Python标准库中datetime模块中的一个类,用于表示日期。它提供了各种属性和方法来进行日期的处理。下面是date类的一些主要属性和方法:

import datetime

(1) 获取当前日期对象

today = datetime.date.today()
print(today)

(2) 日期对象属性:

date_obj.year:年份。
date_obj.month:月份。
date_obj.day:日期。

(3) date对象转为格式化字符串

today = datetime.date.today()
formatted_date = today.strftime("%Y-%m-%d")
print(formatted_date) # 输出:2024-02-13
(3)timedelta类

用于表示时间间隔的对象,可以进行日期时间的加减运算。常用的方法包括:

timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0):创建一个 timedelta 对象。
timedelta.total_seconds():返回时间间隔的总秒数。
import datetime

案例1

from datetime import date

today = date.today()
birthday = date(1998, 5, 15)
age = today - birthday
print("Age:", age.days)

案例2

now = datetime.datetime.now()
ret = now + datetime.timedelta(days=3)
print(ret)
4. sys模块
sys 模块是 Python 标准库中的一个模块,提供了与 Python 解释器和系统交互的功能。它提供了许多与系统相关的函数和变量,可以访问和操作解释器的运行时环境、命令行参数、标准输入输出等。

下面是 sys 模块中一些常用的函数和变量:

sys.argv:命令行参数的列表,包括脚本名称和传递给脚本的参数。
sys.exit([arg]):退出当前程序的执行,并返回可选的错误代码 arg。
sys.path:一个列表,包含用于查找模块的搜索路径。
sys.version:当前 Python 解释器的版本信息。
5. os模块
os 模块是 Python 标准库中的一个模块,提供了与操作系统交互的功能。它允许你访问操作系统的文件系统、执行系统命令等。

下面是os模块一些常用功能的介绍:

文件和目录操作:

os.getcwd(): 获取当前工作目录的路径。

os.chdir(path): 修改当前工作目录为指定路径。

os.listdir(path): 返回指定目录中的文件和目录列表。

os.mkdir(path): 创建一个新的目录。

os.makedirs(path): 递归创建目录,包括中间目录。

os.remove(path): 删除指定的文件。

os.rmdir(path): 删除指定的空目录。

os.removedirs(path): 递归删除目录,包括所有子目录。

os.rename(src, dst): 将文件或目录从src重命名为dst。

操作系统命令:

os.system(command): 执行操作系统命令。

os.popen(command): 执行操作系统命令,并返回一个文件对象。

路径操作:

os.path.join(path1, path2, ...): 将多个路径组合成一个路径。

os.path.split(path): 将路径分割成目录和文件名。

os.path.dirname(path): 返回路径的目录部分。

os.path.basename(path): 返回路径的文件名部分。

os.path.exists(path): 检查路径是否存在。

  1. json模块
    【1】基本概念与语法
    序列化是将数据结构或对象转换为字节流(二进制数据)以便存储或传输

反序列化是将字节流还原为原始数据结构或对象的过程。

序列化最重要的就是json序列化。

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

+-------------------+---------------+
| Python | JSON |
+=====+=+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+
json模块是Python标准库中的一个模块,用于处理JSON(JavaScript Object Notation)数据。它提供了一组函数来解析和生成JSON数据,使得在Python中处理JSON变得非常方便。

3.7 日志模块
loguru的基本使用
from loguru import logger

写入到文件

logger.remove(handler_id=None)

rotation 配置日志滚动记录的机制:rotation="200 MB"

logger.add("mylog.log",level='ERROR',rotation="200 MB")

基本使用,可以打印到console,也可以打印到文件中去。

logger.debug('这是一条测试日志')
logger.info('这是一条信息日志')
logger.success('这是一条成功日志')
logger.warning('这是一条警告日志')
logger.error('这是一条错误日志')
logger.critical('这是一条严重错误日志')
默认的输出格式是:时间、级别、模块、行号以及日志内容。

loguru的基本配置
import sys
from loguru import logger

logger.configure(handlers=[
{
"sink": sys.stderr, # 表示输出到终端
# 表示日志格式化
"format": "{time:YYYY-MM-DD HH:mm:ss.SSS} |{level:8}</>| {name} : {module}:{line:4} | mymodule</> | - {message}</>",
"colorize": True, # 表示显示颜色。
"level": "WARNING" # 日志级别
},
{
"sink": 'first.log',
"format": "{time:YYYY-MM-DD HH:mm:ss.SSS} |{level:8}| {name} : {module}:{line:4} | mymodule | - {message}",
"colorize": True
},
])

logger.debug('this is debug')
logger.info('this is info')
logger.warning('this is warning')
logger.error('this is error')
logger.critical('this is critical')
常见的key及其描述

Key Description
time 发出日志调用时的可感知的本地时间
level 用于记录消息的严重程度
name 进行日志记录调用的__name__
module 进行日志记录调用的模块
line 源代码中的行号
message 记录的消息(尚未格式化)
function 进行日志记录调用的函数
thread 进行日志记录调用的线程名
process 进行日志记录调用的进程名
file 进行日志记录调用的文件
extra 用户绑定的属性字典(参见bind())
exception 格式化异常(如果有),否则为' None '
elapsed 从程序开始经过的时间差
常用的颜色和样式标签

颜色(简称) 样式(简称)
黑色(k) 粗体(b)
蓝色(e) 暗淡(d)
青色(c) 正常(n)
绿色(g) 斜体(i)
洋红色(m) 下划线(u)
红色(r) 删除线(s)
白色(w) 反转(v
黄色(y) 闪烁(l)

  1. 模块与包
    4.1 模块
    模块本质上就是一个py文件,模块一共有三种:

python标准库

第三方模块

应用程序自定义模块

在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。而这样的一个py文件在Python中称为模块(Module)。

模块是组织代码的更高级形式,大大提高了代码的阅读性和可维护性。

另外,使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。

4.2 包
【1】包介绍
实际开发中,一个大型的项目往往需要使用成百上千的Python模块,如果将这些模块都堆放在一起,势必不好管理。而且,使用模块可以有效避免变量名或函数名重名引发的冲突,但是如果模块名重复怎么办呢?因此,Python提出了包(Package)的概念。

什么是包呢?简单理解,包就是文件夹,只不过在该文件夹下必须存在一个名为“init.py” 的文件,其作用就是告诉 Python 要将该目录当成包来处理

注意,这是 Python 2.x 的规定,而在 Python 3.x 中,init.py 对包来说,并不是必须的。

包的主要作用是组织和管理模块,使得代码更加结构化和可维护。包的层次结构可以是多层的,即可以包含子包(子目录)和子模块。

【2】创建包
包其实就是文件夹,更确切的说,是一个包含“init.py”文件的文件夹。因此,如果我们想手动创建一个包,只需进行以下 2 步操作:

新建一个文件夹,文件夹的名称就是新建包的包名;

在该文件夹中,创建一个__init__.py文件(前后各有 2 个下划线‘_’),该文件中可以不编写任何代码。当然,也可以编写一些 Python 初始化代码,则当有其它程序文件导入包时,会自动执行该文件中的代码

创建好包之后,我们就可以向包中添加模块(也可以添加包)。

【4】导包语法
通过前面的学习我们知道,包其实本质上还是模块,因此导入模块的语法同样也适用于导入包。无论导入我们自定义的包,还是导入从他处下载的第三方包,导入方法可归结为以下 3 种:

import 包名[.模块名 [as 别名]]

from 包名1.包名2 import 模块名 [as 别名]

from 包名1.包名2.模块名 import 成员名 [as 别名]

用 [] 括起来的部分,是可选部分,即可以使用,也可以直接忽略。

【5】导入模块和包本质
通常情况下,当使用 import 语句导入模块后,Python 会按照以下顺序查找指定的模块文件:

在当前目录,即当前执行的程序文件所在目录下查找;

到 PYTHONPATH(环境变量)下的每个目录中查找;

到 Python 默认的安装目录下查找。

以上所有涉及到的目录,都保存在标准模块 sys 的 sys.path 变量中,通过此变量我们可以看到指定程序文件支持查找的所有目录。换句话说,如果要导入的模块没有存储在 sys.path 显示的目录中,那么导入该模块并运行程序时,Python 解释器就会抛出 ModuleNotFoundError(未找到模块)异常。

解决“Python找不到指定模块”的方法有 3 种,分别是:

向 sys.path 中临时添加模块文件存储位置的完整路径;

将模块放在 sys.path 变量中已包含的模块加载路径中;

设置 path 系统环境变量。

功能模块导入功能 模块,import

【6】init.py
前面章节中,已经对包的创建和导入进行了详细讲解,并提供了大量的实例,这些实例虽然可以正常运行,但存在一个通病,即为了调用包内模块的成员(变量、函数或者类),代码中包含了诸多的 import 导入语句,非常繁琐。

通过在 init.py 文件使用 import 语句将必要的模块导入,这样当向其他程序中导入此包时,就可以直接导入包名,也就是使用import 包名(或from 包名 import *)的形式即可。

mysql包中的__init__.py

  1. 虚拟环境
    【1】pip命令
    进行 Python 程序开发时,除了使用 Python 内置的标准模块以及我们自定义的模块之外,还有很多第三方模块可以使用,

使用第三方模块之前,需要先下载并安装该模块,然后就能像使用标准模块和自定义模块那样导入并使用了。因此,本节主要讲解如何下载并安装第三方模块。

下载和安装第三方模块,可以使用 Python 提供的 pip 命令实现。pip 命令的语法格式如下:

pip install|uninstall|list 模块名
其中,install、uninstall、list 是常用的命令参数,各自的含义为:

install:用于安装第三方模块,当 pip 使用 install 作为参数时,后面的模块名不能省略。

uninstall:用于卸载已经安装的第三方模块,选择 uninstall 作为参数时,后面的模块名也不能省略。

list:用于显示已经安装的第三方模块。

【2】虚拟环境命令
虚拟环境(Virtual Environment)是 Python 中用于隔离项目依赖和运行环境的工具。它允许你在同一台计算机上同时管理多个项目,每个项目都有自己独立的 Python 解释器和第三方库,互相之间不会相互干扰。

使用虚拟环境的好处包括:

隔离依赖:每个项目可以有自己的依赖库,不同项目之间的依赖冲突不会发生。

简化部署:可以将项目的依赖库和运行环境一起打包,方便在其他计算机上部署和运行。

灵活性:可以在不同的项目中使用不同的 Python 版本,以满足项目的特定需求。

在 Python 3.3 及以后的版本中,Python 内置了 venv 模块,用于创建和管理虚拟环境。以下是使用 venv 模块创建和激活虚拟环境的基本步骤:

创建虚拟环境: 打开终端(命令行),进入你想要创建虚拟环境的目录,然后运行以下命令:

这是 Python 内置的 venv 模块的命令语法。

它通过调用 Python 解释器的 -m 参数来执行 venv 模块内建的创建虚拟环境的功能。

python3 -m venv <env_name>
激活虚拟环境: 在终端中运行以下命令来激活虚拟环境:

在 macOS/Linux 系统上:

source myenv/bin/activate

在 Windows 系统上:

myenv\Scripts\activate
激活虚拟环境后,终端的提示符会显示虚拟环境的名称。

使用虚拟环境: 在激活的虚拟环境中,你可以安装和管理项目所需的依赖库,运行项目的代码等。所有的操作都将在虚拟环境中进行,不会影响全局 Python 环境和其他虚拟环境。

退出虚拟环境: 在终端中运行以下命令即可退出虚拟环境:

deactivate
导出和导入依赖:

导出依赖到文件

pip freeze > requirements.txt

从文件中导入依赖:

pip install -r requirements.txt
4. 软件目录开发规范
在软件开发中,一个良好的目录结构可以提高代码的可维护性和可扩展性,使团队成员更容易理解和协作。尽管目录结构可以因项目类型和团队偏好而异,但以下是一些常见的软件开发目录规范和最佳实践:

项目根目录:在项目的根目录下,应包含与项目相关的文件和文件夹,如README、LICENSE等。这是整个项目的起点。

源代码目录:通常将源代码放在一个独立的目录中。这个目录应该有一个具有描述性的名称,如src、lib或app。在源代码目录下,可以按照项目的模块、功能或层次结构创建子目录。

测试目录:测试代码通常位于一个独立的目录中。可以使用名称如tests、test或spec的目录来存放单元测试、集成测试和其他测试相关的文件。

文档目录:为了方便团队成员和用户了解项目和代码的使用方式,可以创建一个文档目录,其中包含项目文档、API文档、用户手册等。

配置目录:存放项目的配置文件,如数据库配置、日志配置、环境变量配置等。可以将这些配置文件放在一个名为config或conf的目录下。

资源目录:存放项目所需的资源文件,如图像、样式表、静态文件等。可以将这些资源文件放在一个名为assets或resources的目录下。

日志目录:存放项目的日志文件,包括运行日志、错误日志等。可以将这些日志文件放在一个名为logs的目录下。

其他目录:根据项目的具体需求,可以创建其他目录来存放特定类型的文件,如缓存目录、备份目录等。

在设计目录结构时,要考虑项目的规模、复杂性和团队的需求。重要的是要保持一致性,并与团队成员共享并遵循相同的目录规范,以便于项目维护和协作。

以下是一个常见的目录规范示例,可以作为参考:

project/
├── docs/ # 文档目录
│ ├── requirements/ # 需求文档
│ ├── design/ # 设计文档
│ └── api/ # API 文档
├── src/ # 源代码目录
│ ├── app/ # 应用代码
│ │ ├── models/ # 模型定义
│ │ ├── views/ # 视图逻辑
│ │ ├── controllers/ # 控制器逻辑
│ │ └── utils/ # 工具函数
│ ├── config/ # 配置文件
│ ├── tests/ # 测试代码
│ └── scripts/ # 脚本文件
├── static/ # 静态资源目录
│ ├── css/ # 样式文件
│ ├── js/ # JavaScript 文件
│ ├── images/ # 图片文件
│ └── fonts/ # 字体文件
├── templates/ # 模板文件目录
├── data/ # 数据文件目录
├── logs/ # 日志文件目录
├── dist/ # 分发版本目录
├── run.py # 用于启动应用程序或执行相关操作的文件。
├── vendor/ # 第三方依赖目录
├── requirements.txt # 依赖包列表
├── README.md # 项目说明文档
└── LICENSE # 许可证文件
上述示例中,主要包含以下目录:

docs/:用于存放项目的文档,包括需求文档、设计文档和API文档等。

src/:存放项目的源代码,按照模块进行组织,例如app/目录下存放应用代码,config/目录下存放配置文件,tests/目录下存放测试代码等。

static/:存放静态资源文件,例如CSS样式文件、JavaScript文件、图片文件和字体文件等。

templates/:存放模板文件,用于生成动态内容的页面。

data/:存放数据文件,例如数据库文件或其他数据存储文件。

logs/:存放日志文件,记录项目的运行日志。

dist/:存放项目的分发版本,例如编译后的可执行文件或打包后的软件包。

vendor/:存放第三方依赖,例如外部库或框架。

requirements.txt:列出项目所需的依赖包及其版本信息。

README.md:项目说明文档,包含项目的介绍、使用指南和其他相关信息。

LICENSE:许可证文件,定义项目的使用和分发条款。

posted on 2026-01-06 20:23  恍惚aa  阅读(1)  评论(0)    收藏  举报