- os模块
- 通用变量
- 案例1:使用os.path拼凑路径[^3]名称
- 操作目录函数
- 遍历目录
- 案例2:遍历一个目录
- 高级文件操作
- 操作函数
- 获取文件基本信息
- 案例3:获取文件基本信息
- os.path子模块
- 操作目录函数
- 案例4:获得文件基本信息(同os模块的高级文件操作)
python中并没有提供直接操作目录的函数或对象,需要只用内置的os模块实现
os模块是python实现与操作系统交互的模块,在不同的操作系统上运行可能会得到不同的结果
| 变量名 | 描述 | 举例 |
|---|---|---|
| os.name | 返回操作系统类型 | nt表示windows,posix表示linux |
| os.sep(os.path.sep) | 系统路径分隔符号 | window为"",linux为"/",如E:newfile.txt中的’’ |
| os.extsep(os.path.extsep) | 获取文件名称和后缀之间的间隔符号 | 如cat.jpeg中的"." |
import os
path_newfile='E:'+os.sep+'newfile'+os.path.extsep+'txt' # os模块存在有sep系统分隔符变量,与os.path模块中的相同
path_cat='E:'+os.path.sep+'cat'+os.path.extsep+'jpeg'
if os.path.exists(path_newfile) and os.path.exists(path_cat):
print('文件路径拼凑完毕:',path_newfile)
print('图片路径拼凑完毕:',path_cat)
# 文件路径拼凑完毕: E:newfile.txt
# 图片路径拼凑完毕: E:cat.jpeg
操作目录函数
| 方法 | 描述 |
|---|---|
| getcwd() | 返回当前的工作目录 |
| chdir(path) | 将path设置为当前工作目录 |
| mkdir(path,mode) | 创建单级目录(即创建一个空的目录) |
| makedir(name,mode=0o777,exist_ok=Flase) | 创建多级目录(即可以在未创建的父目录下创建子目录) |
| rmdir(path) | 删除目录(path为要删除的目录相对或绝对路径,path必须存在只能为空目录,否则将会报错) |
| removedirs(path) | 删除多级目录 |
| walk(top[,topdown]) | 遍历目录 |
| listdir(path) | 列出当前目录中所有子路径(只能列出子路径,列表形式返回) |
| rename(path,newpath) | 为目录或文件重命名 |
os模块的walk()函数2可以实现遍历目录的功能
语法格式:os.walk(top[,topdown],[,onerror][,followlinks])
参数说明
| 参数 | 描述 |
|---|---|
| top | 根目录 |
| topdown | 遍历顺序,True表示自上向下遍历,False表示自下向上遍历(默认True) |
| onerror | 错误处理方式,可以指定一个错误处理函数,默认忽略 |
| followlinks | 是否支持访问由符号链接指向的目录,默认支持 |
os模块除了操作目录外,还可以对文件进行一些高级操作
操作函数| 函数 | 描述 | 简介 |
|---|---|---|
| access(path,mode) | 获取对文件是否有mode所指定的访问权限,mode可取(R_OKW_OKX_OKF_OK) ,有访问权限返回1,否则返回0 | |
| chmod(path,mode) | 修改指定文件的访问权限 | 修改权限 |
| remove(path) | 删除path指定的文件路径 | 删除文件或目录(路径不存在报错) |
| rename(path,name) | 将path指定的文件名修改为newname | 重命名(路径不存在报错) |
| stat(path) | 返回path指定的文件信息 | 获取文件信息 |
语法格式:os.stat(path),返回一个文件对象,该对象有如下属性,通过访问这些属性可以获取文件的基本信息
| 属性 | 描述 | 属性 | 描述 |
|---|---|---|---|
| st_mode | 保护模式 | st_dev | 设备名 |
| st_ino | 索引号 | st_uid | 用户ID |
| st_nlink | 被连接数目 | st_gid | 组ID |
| st_size(os.path.getsize()) | 文件大小 | st_atime(os.path.getatime()) | 最后一次访问时间(时间戳) |
| st_mtime(os.path.getmtime()) | 最后一次修改时间(时间戳) | st_ctime(os.path.getctime()) | 文件创建时间(windows平台) |
import os
path=r'E:网络爬虫CSDN1三国演义.txt'
fileobj=os.stat(path)
print('索引号:',fileobj.st_ino)
print('文件大小:',fileobj.st_size)
print('最后一次访问时间:',fileobj.st_atime)
运行结果
path子模块主要功能是进行路径的处理判断,可以根据一个路径获取该路径对应的父目录和子文件信息
操作目录函数| 方法 | 描述 | 返回数据类型 |
|---|---|---|
| abspath(path) | 获得绝对路径 | 字符串 |
| basename(path) | 获得文件名称 | 字符串 |
| dirname(path) | 返回父路径 | 字符串 |
| join(path,name) | 将目录与目录或文件名拼接(当path中有多个绝对路径时,只取最后一个拼接) | |
| exists(path) | path为目录或文件的路径3 | 布尔值 |
| getatime() | 返回最近访问时间 | 浮点数(时间戳) |
| getmtime() | 返回最近一次修改时间 | 浮点数(时间戳) |
| getctime() | 返回创建时间 | 浮点数(时间戳) |
| getsize() | 返回文件大小 | 数字(文件所占字节大小) |
import os
PATH='E:\CSDN\122.py'
if os.path.exists(PATH):
print(f"文件绝对路径为 {os.path.abspath(PATH)}")
print(f"父路径为 {os.path.dirname(PATH)}")
print(f"文件名称为 {os.path.basename(PATH)}")
print(f"文件大小 {os.path.getsize(PATH)}")
print(f"当前路径是否为文件 {os.path.isfile(PATH)},是否为目录 {os.path.isdir(PATH)}")
# 文件绝对路径为 E:\CSDN\122.py
# 父路径为 E:\CSDN
# 文件名称为 122.py
# 文件大小 564
# 当前路径是否为文件 True ,是否为目录 False
python程序的跨平台特点,使用过程中,由于文件路径分隔符在不同的操作系统(如window,linux)有明显差别,为解决这样的问题,在定义操作路径时,我们使用os.path模块提供的路径变量进行访问路径的拼凑处理 ↩︎
walk()函数的返回值为包含3个元素(dirpath,dirnames,filenames)的元组生成器对象,
参数
↩︎用来定位一个文件或目录的字符串称为一个路径,根据定位方式,路径又被分为相对路径和绝对路径
当前工作目录就是指当前文件所在的目录。python中可以通过os模块的getcwd()函数获取当前工作目录
相对路径
1、'./' 表示当前目录
2、'../' 表示父级目录
3、'/' 表示根目录
绝对路径
使用文件时指定文件的实际路径,不依赖当前工作目录,如路径:C://program//123.py是一个绝对路径,而路径:./123.py是一个相对路径 ↩︎



