前言
文件和文件夹的操作
os模块
引入模块
创建目录
<dir>
:目录的路径
创建多级目录
删除文件或目录
<file>
:文件或目录的路径
删除多级目录
<dir>
:目录路径
重命名文件或目录
<file_old>
:重命名之前的文件或目录路径
<file_new>
:重命名之后的文件或目录路径
1
| os.rename("<src_old>", "<src_new>")
|
切换当前目录
获取当前目录
获取当前目录内的文件和目录列表
返回一个列表
返回一个迭代器
- 返回一个迭代器,迭代器对象中有很多属性,可以查询对应文件的属性
file.stat().st_size
:文件的大小,单位字节B
file.stat().st_atime
:文件最近访问时间
file.stat().st_mtime
:文件最近修改时间
file.stat().st_ctime
:文件创建事件(Windows)
1 2
| for file in os.scandir("<file>"): print(file.stat())
|
返回递归的目录和文件名
1 2 3 4
| for path, dirname, filename in os.walk("<dir>"): print(f"当前目录名: {path}") print(f"子目录名列表: {dirname}") print(f"子文件名列表: {filename}")
|
改变目录权限
对路径的判断
获取文件名
<file>
:文件路径
1
| os.path.basename("<file>")
|
获取目录名
1
| os.path.dirname("<file>")
|
获取文件名和目录名
1 2
| print(f"目录名: {os.path.split('<file>')[0]}") print(f"文件名: {os.path.split('<file>')[1]}")
|
组合成路径名
获取文件最近访问时间
1 2
| time = os.path.getatime("<file>") print(datetime.datetime.fromtimestamp(time))
|
获取文件创建时间
1 2
| time = os.path.getctime("<file>") print(datetime.datetime.fromtimestamp(time))
|
获取文件修改时间
1 2
| time = os.path.getmtime("<file>") print(datetime.datetime.fromtimestamp(time))
|
获取文件大小
1
| os.path.getsize("<file>")
|
判断文件是否存在
判断路径是否为绝对路径
判断路径是否为目录
glob模块
引入模块
获取匹配到的文件
<file>
:文件或目录名
**
:模糊匹配当前目录下的所有文件及目录
**/
:模糊匹配当前目录下的所有目录
*<keywords>*
:关键字模糊匹配
recursive=True
:递归操作
1 2 3
| glob.glob("<file>")
glob.glob("<file>", recursive=True)
|
shutil模块
引入模块
拷贝文件
<file_old>
:拷贝前的文件路径
<dir>
:拷贝后的目录路径
<file_new>
:拷贝后的文件路径
1 2
| shutil.copy("<file_old>", "<dir>") shutil.copy("<file_old>", "<dir>/<file_old>")
|
1
| shutil.copy("<file_old>", "<dir>/<file_new>")
|
拷贝目录
<dir_old>
:拷贝前的目录路径
<dir_new>
:拷贝后的目录路径
1
| shutil.copytree("<file_old>", "<file_new>")
|
移动文件或目录
<file_old>
:移动前的文件路径
<file_new>
:移动后的文件路径
1
| shutil.move("<file_old>", "<file_new>")
|
<dir_old>
:移动前的目录路径
<dir_new>
:移动后的目录路径
1
| shutil.move("<dir_old>", "<dir_new>/")
|
删除目录
<dir>
:目录路径
pathlib模块
- 利用pathlib模块可以替代os.path实现快速查找文件和目录
引入模块
1
| from pathlib import Path
|
创建Path对象
- 使用pathlib时,需要创建Path对象,操作文件其实就是对Path对象的操作
<src>
:文件或目录的绝对路径或相对路径
搜索
<dir>
:指定一个目录,作为开始搜索的根目录
<keywords>
:关键字
1
| result = list(file.glob("*<keywords>*"))
|
递归搜索
- 搜索当前目录及其子目录的所有文件和目录,返回一个列表
<dir>
:指定一个目录,作为开始搜索的根目录
<keywords>
:关键字
1
| result = list(file.rglob("*<keywords>*"))
|
获取所有文件和目录
1
| result = list(file.rglob("*"))
|
打开文件
<file>
:指定文件
获取相对路径
拆分相对路径的路径层级
获取绝对路径
创建目录
创建多级
1
| file.makedir(parents=True)
|
重命名文件或目录
<name_new>
:新的文件名
1
| file.rename("<name_new>")
|
移动文件或目录
<path_new>
:新的路径
1
| file.replace(<path_new>)
|
删除文件或空目录
判断文件或目录是否存在
- 返回一个布尔值,如果存在返回True,不存在返回False
判断是否是一个文件
判断是否是一个目录
直接拼接路径
转换格式
- 转换后得到的是一个Path对象,需要通过open函数保存到本地
.<str>
:转换格式后的后缀名
1
| file = file.suffix(".<str>")
|
文件读写
1 2
| with file.open() as f: ...
|
完成
参考文献
哔哩哔哩——Python-清风
哔哩哔哩——千锋教育