python pathlib模块的学习

简介: 今天无意看到django 3.1的升级记录 就开始更新django了,然而只是更新了核心文件,项目层的都没有变,就需要手动改从3.0.*升到3.1的文件 @(狂汗) 很想说,官方还没有完全改完吧... 因为只改了settings的文件(要不去提交一波只需要把settings的os改成

今天无意看到django 3.1的升级记录 就开始更新django了,然而只是更新了核心文件,项目层的都没有变,

就需要手动改从3.0.*升到3.1的文件 @(狂汗) 很想说,官方还没有完全改完吧... 因为只改了settings的文件(要不去提交一波

只需要把settings的os改成

from pathlib import Path
BASE_DIR = Path(__file__).resolve(strict=True).parent.parent

如果你想再把自己的静态文件和媒体文件给改一下

STATICFILES_DIRS = [str(BASE_DIR / Path('assets') / Path('static')), ]
STATIC_URL = '/assets/static/'
MEDIA_ROOT = str(str(BASE_DIR / Path('assets') / 'uploads'))
MEDIA_URL = '/assets/uploads/'

os模块改成->pathlib模块

因为要去修改,特地得补了下python pathlib模块的知识

最底下有两个模块的对比

看完了官方文档,卧槽,太乱了,什么好感都没有

然后,我去谷歌了一把,果然看到了好多对pathlib模块的添狗文章

而且因为django的更新,微信公众号也多了好多了对这个模块的介绍

1770419987.png

[button href="https://www.dongwm.com/post/use-pathlib/"]感觉挺好的文章[/button]

都是因为他们喜欢短的@(笑尿)

1088133571.png

这是我自己使用两个模块的对接,当知道 / 的操作,还真的挺爽的,好感度有这么上升

唯一不好的是,输出不是纯字符,得自己格式化

....

@(笑尿) 觉得舒服的应该就是这个写法吧

那好,我们来分析一下官方文档,

正如官方所说from pathlib import Path是主类,主要功能在这里

可以粗略地看完纯路径和通用性质

斜杠 / 操作符有助于创建子路径,就像 os.path.join() 一样,就像上面一样,使用/连接,挺爽的

基本用法是

p = Path('/home/ubuntu')

返回一个对象,PosixPath('/home/ubuntu'),所以我上面说可以粗略代过

str(p) 返回字符串'/home/ubuntu'

它可以用parents访问父级

因为是面对对象且是Path主类,既可以直接通过p.操作访问后缀啊等等,而且可以不再是嵌套调用

它还可以直接读取文件,写入文件,创建文件,不需要with open操作了

目录
相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
345 7
|
2月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
331 1
|
2月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
196 1
|
2月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
294 1
|
2月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
254 0
|
2月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
382 4
|
2月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
176 4
|
3月前
|
安全 Python
告别 os.path 的繁琐:拥抱 Python 的 pathlib
告别 os.path 的繁琐:拥抱 Python 的 pathlib
422 6
|
2月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
289 0

推荐镜像

更多