Python笔记----使用Pathlib模块操作目录

Python笔记----使用Pathlib模块操作目录

1.使用pathlib模块操作目录
pathlib模块提供了一组面向对象的类,这些类可代表各种操作系统上的路径,程序可通过这些类操作路径。
pathlib模块下有两个子类:PurePath和Path。
Purepath只是负责对路径字符串执行操作,至于该字符串是否对应实际路径,它并不关心。
Path对象可用于判断对应的文件是否存在,是否为文件,是否为目录等。

PurePath的基本功能
程序可使用PurePath和PurePath的两个子类创建PurePath对象。程序在创建PurePath或Path时,即可传入单个路径字符串,也可传入多个路径字符串,PurePath会把他们拼接成一个字符串。例如:

www.zeeklog.com  - Python笔记----使用Pathlib模块操作目录

​ 如果在创建PurePath时不传入任何参数,系统会默认创建当前路径的PurePath,相当于传入点好(.代表当前路径)作为参数。
​ 如果在创建PurePath时传入的参数包含多个根路径,则只有最后一个根路径及后面的子路径生效。

www.zeeklog.com  - Python笔记----使用Pathlib模块操作目录

​ 在Windows风格的路径中,只有盘符才能算根路径,仅有斜杠是不算的。
​ 如果在创建PurePath时传入的路径字符串包含多余的/和.系统会直接忽略他们,但不会忽略两点(…代表上一级路径)。

www.zeeklog.com  - Python笔记----使用Pathlib模块操作目录

​ PurePath对象支持各种比较运算符,即可比较是否相等,也可比较大小,实际上就是比较它们的路径字符串。对于不同风格的路径字符串,他们可以比较是否相等,但不可以比较大小,否则会报错。例如:

www.zeeklog.com  - Python笔记----使用Pathlib模块操作目录

​ PurePath对象支持斜杠(/)作为运算符,该运算符的作用是将多个路径连接起来,UNIX和Windows风格的路径字符串都支持斜杠作为连接运算符。例如:

www.zeeklog.com  - Python笔记----使用Pathlib模块操作目录

​ 还可以用str()方法将PurePath对象恢复为字符串。会转换为对应平台风格的字符串。

2.Path的功能和用法
iterdir()方法可返回Path对应目录下的所有子目录和文件。glob()方法用于获取Path对应目录下匹配指定模式的所有文件,此方法可非常方便的查找指定文件。例如:

from pathlib import *

#获取当前目录
p = Path('.')
#遍历当前目录下所有文件和子目录
#for i in p.iterdir():
    #print(i)
print('================')
#获取上一级目录
p = Path('../')
#获取上级目录和其子目录下的.py文件
#for i in p.glob('**/*.py'):
    #print(i)
print('================')
#获取D:\tools\PythonCode\基于Python的小游戏\飞机大战对应的目录
p = Path('D:/tools/PythonCode/基于Python的小游戏/飞机大战')
#获取上级目录和其子目录下的.py文件
for i in p.glob('**/*.py'):
    print(i)
read_bytes()和read_text(encoding = None, errors = None)方法分别用于读取Path对应文件的字节数据(二进制数据)和文本数据。
write_bytes(data)和Path.write_text(data,encoding = None, errors = None)方法来输出字节数据(二进制数据)和文本数据。例如:
from pathlib import *

p = Path('a.txt')
#指定以GBK字符集输出文本内容
result = p.write_text('''我叫LSW''', encoding = 'GBK')
#返回输出的字符数
print(result)

#指定以GBK字符集读取文本内容
content = p.read_text(encoding = 'GBK')
print(content)

b= p.read_bytes()
print(b)

Read more

深入理解 Proxy 和 Object.defineProperty

在JavaScript中,对象是一种核心的数据结构,而对对象的操作也是开发中经常遇到的任务。在这个过程中,我们经常会使用到两个重要的特性:Proxy和Object.defineProperty。这两者都允许我们在对象上进行拦截和自定义操作,但它们在实现方式、应用场景和灵活性等方面存在一些显著的区别。本文将深入比较Proxy和Object.defineProperty,包括它们的基本概念、使用示例以及适用场景,以帮助读者更好地理解和运用这两个特性。 1. Object.defineProperty 1.1 基本概念 Object.defineProperty 是 ECMAScript 5 引入的一个方法,用于直接在对象上定义新属性或修改已有属性。它的基本语法如下: javascript 代码解读复制代码Object.defineProperty(obj, prop, descriptor); 其中,obj是目标对象,prop是要定义或修改的属性名,descriptor是一个描述符对象,用于定义属性的特性。 1.2 使用示例 javascript 代码解读复制代码//

By Ne0inhk

Proxy 和 Object.defineProperty 的区别

Proxy 和 Object.defineProperty 是 JavaScript 中两个不同的特性,它们的作用也不完全相同。 Object.defineProperty 允许你在一个对象上定义一个新属性或者修改一个已有属性。通过这个方法你可以精确地定义属性的特征,比如它是否可写、可枚举、可配置等。该方法的使用场景通常是需要在一个对象上创建一个属性,然后控制这个属性的行为。 Proxy 也可以用来代理一个对象,但是相比于 Object.defineProperty,它提供了更加强大的功能。使用 Proxy 可以截获并重定义对象的基本操作,比如访问属性、赋值、函数调用等等。在这些操作被执行之前,可以通过拦截器函数对这些操作进行拦截和修改。因此,通过 Proxy,你可以完全重写一个对象的默认行为。该方法的使用场景通常是需要对一个对象的行为进行定制化,或者需要在对象上添加额外的功能。 对比 以下是 Proxy 和 Object.defineProperty 的一些区别对比: 方面ProxyObject.defineProperty语法使用 new Proxy(target,

By Ne0inhk