文件及目录操作
基本操作
创建和打开文件
file = open(filename[, mode[, buffering]])
- mode:r, rb, r+, rb+, w, wb, w+, wb+, a, ab, a+, ab+
- buffering:指定缓冲模式,0为不缓存,1表示缓存,大于1表示缓冲区大小。默认是缓存模式
关闭文件
file.close()
打开文件时使用with语句
with语句执行完毕后会关闭文件
with expression as target:
with-body
例:
with open("message.txt",'w') as file:
pass
写入文件内容
file.write(string)
前提是保证打开模式是’w’或’a’,否则会报异常
读取文件内容
file.read([size]) #从文件头开始读取
file.seek(offset[, whence]) #指定位置开始读取
#offset的值是按一个汉字占两个字符,英文和数组占一个字符计算,与read计算方式不同
file.readline() #读取一行
file.readlines() #读取全部行,以列表的形式存在,列表中每个元素是一行内容
目录操作
os和os.path模块
>>> import os
>>> os.name
'nt' # nt为windows系统,posix为linux、UNIX、MacOS系统
>>> os.linesep
'\r\n' #获取系统的换行符
>>> os.sep
'\\' #获取系统的路径分隔符
os:
- getcwd():返回当前的工作目录
- listdir(path):返回指定路径下的文件和目录信息
- mkdir(path [, mode]):创建目录
- makeedirs(path1/path2…[, mode]):创建多级目录
- rmdir(path):删除目录
- removedirs(path1/path2…):删除多级目录
- chdir(path):把path设置为当前工作目录
- walk(top[, topdown[, onerror]]):遍历目录树,返回元组,包括所有路径名,目录列表和文件列表三个元素
os.path:
- abspath(path):获取文件或目录的绝对路径
- exists(path):判断目录或文件是否存在,存在返回True
- join(path, name):将目录与文件名拼接起来
- splitext():分离文件名和扩展名
- basename(path):从目录中提取文件名
- dirname(path):从路径中提取文件路径,不包括文件名
- isdir(path):判断是否为有效路径
路径
os.getcwd() #返回相对路径
os.path.abspath(path) #返回该path的绝对路径
os.path.join("E:\program","demo\message.txt") #拼接到一起
判断目录是否存在
os.path.exists(path) #判断目录或文件是否存在
创建目录
os.mkdir(path) #创建一级目录
os.makedirs(path) #创建多级目录
删除目录
os.rmdir(path) #删除空目录
import shutil
shutil.rmtree(path) #删除目录下的子目录及内容
遍历目录
os.walk(top[, topdown][, onerror][, followlinks])
top:要遍历的根目录
topdown:遍历顺序,为True则自上而下(即先遍历根目录)
onerror:错误处理方式,默认为忽略
followlinks:为True则遍历由符号链接指向的目录
返回值:三个元素(dirpath, dirnames, filenames)的元组生成器,dirpath为当前遍历的路径,是一个字符串;dirnames为当前路径下包含的子目录,是一个列表;filenames为当前路径下包含的文件,是一个列表
高级文件操作
access(path, accesmode)
chmod(path, mode)
remove(path)
rename(src, dst)
stat(path)
startfile(path[, operation])
删除文件
os.remove(path)
重命名文件和目录
os.rename(src, dst) #只能修改最后一级目录名,否则会抛异常
获取文件基本信息
os.stat(path)
返回值:
- st_mode:保护模式
- st_dev:设备名
- st_ino:索引号
- st_uid:用户ID
- st_nlink:硬链接号
- st_gid:组ID
- st_size:文件大小(单位byte)
- st_atime:最后一次访问时间
- st_mtime:最后一次修改时间
- st_ctime:最后一次状态变化时间(windows系统是返回文件创建时间)
例:
>>> import os
>>> fileinfo = os.stat("E:\\avc.txt")
>>> fileinfo.st_atime
1634276618.4410193
>>> fileinfo.st_mtime
1626666185.4531255
>>> fileinfo.st_ctime
1626666185.4062488
>>>
获取的时间需要进行格式化:
>>> def formatTime(longtime):
... '''格式化时间'''
... import time
... return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(longtime))
...
>>> formatTime(fileinfo.st_ctime)
'2021-07-19 11:43:05'
>>>