os模块常用函数的用法
注:这些函数在各个操作系统下的使用方式都一样
import os#首先需要导入os模块
os.getcwd()#返回当前工作目录
#'E:\\'
os.chdir('f:\\')#改变当前工作目录
#无返回,当目录不存在时报错
os.getcwd()
#'F:\\'
os.listdir(path='.')#返回一个包含指定目录下所有的文件及文件夹的列表
#默认参数是当前工作目录
os.mkdir(path)#创建单层目录,如果文件夹已存在则抛出异常
#可以传入多层目录,但是当前面的目录不存在时会报错
os.makedirs(path, exist_ok=False)
#递归创建多层目录;
#当目标目录已存在且exist_ok =False时会报错
os.remove(path)#删除文件
os.rmdir(path)#尝试删除单层目录,如果该目录非空则报错
#所以需要先用os.remove()删除文件
os.removedirs(path)#递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常
os.rename(oldname, newname)#文件更名
os.system(command)#运行系统shell命令
os.system('cmd')#打开命令框,进入命令行模式
os.curdir#指代当前目录
#'.'
os.oardir#指代上一级目录
#'..'
os.sep#得到当前操作系统的路径分隔符
#'\\'(Windows下
os.linesep#得到当前操作系统使用的行终止符
#'\r\n'(Windows下
os.name#得到当前操作系统名
#'nt'(Windows下
- os.path模块
os.path.basename(path)#去除目录路径,得到文件名
os.path.basename("E:\Git\LICENSE.txt")
#'LICENSE.txt'
os.path.dirname(path)#去除文件名,得到目录路径
os.path.dirname("E:\Git\LICENSE.txt")
#'E:\\Git'
os.path.join(path, *paths)#将传入的各个字符串组合成路径名(只传入一个字符串也可)
os.path.join('a', 'b', 'c')
#'a\\b\\c'
os.path.split(path)#分割文件名与路径
os.path.split('a\\b\\c')
#('a\\b', 'c')
#等价于tuple(os.path.dirname(path), os.path.basename(path))
os.path.splitext(path)#分离文件名与扩展名,返回类型为元组
os.path.splitext('a\\b\\c')
#('a\\b\\c', '')
注意:上面这些os.path中函数是单纯对字符串进行操作,不会判断传入的字符串是否为真实存在的文件夹/文件
- 下面几个函数会对传入的参数进行判断:
getsize(filename)#返回指定文件的大小,单位是字节,如果文件不存在则报错
os.path.getsize("E:\Git\LICENSE.txt")
#18765
os.path.getatime(file)#得到指定文件最近访问时间,返回浮点型秒数,可用time模块的gmtime()或localtime()函数进行换算
os.path.getctime(file)#得到文件的创建时间
os.path.getctime("E:\Git\LICENSE.txt")
#1573126507.1538801
os.path.getmtime(file)#得到文件的最新修改时间
- 示例
import time
time.gmtime(os.path.getctime("E:\Git\LICENSE.txt"))
'''time.struct_time(tm_year=2019, tm_mon=11, tm_mday=7, tm_hour=11, tm_min=35, tm_sec=7, tm_wday=3, tm_yday=311, tm_isdst=0)'''
#得到的是英国格林威治时间
time.localtime(os.path.getctime("E:\Git\LICENSE.txt"))
time.struct_time(tm_year=2019, tm_mon=11, tm_mday=7, tm_hour=19, tm_min=35, tm_sec=7, tm_wday=3, tm_yday=311, tm_isdst=0)
#得到本地(北京)时间