os模块
【一】什么是os模块
-
os模块可以操作本地的文件夹及文件
-
创建删除文件夹/文件
-
执行本地的cmd命令
-
拼接路径
-
file表示当前文件
【二】文件路径相关操作(path)
【1】获取当前绝对路径(abspath)
import os
#获取当前路径
os_path = os.path.abspath(__file__)
print(os_path)#输出:D:\pycharm\project\DAY01\作业\笔记练习.py
【2】获得当前文件所在文件路径(dirname)
import os
#获得当前文件所在文件路径
os_path = os.path.dirname(__file__)
print(os_path)#D:\pycharm\project\DAY01\作业
【3】判断当前文件路径是否存在----》文件夹/文件(exists)
file_name = r"D:\pycharm\project\DAY01\作业\tom_log.text"#先给一个路径
print(os.path.exists(path=file_name))#输出True 说明这个路径存在,不存在返回False
【4】拼接文件路径(join)
import os
BASE_DIR = os.path.dirname(__file__)#当前路径
print(BASE_DIR)#D:\pycharm\project\DAY01\作业
file_name = 'img'
# join 后面可以跟多个路径
file_path = os.path.join(BASE_DIR, file_name)#拼接
print(file_path)#D:\pycharm\project\DAY01\作业\img
【5】切割文件路径
-
切后得到一个元组里面有两个元素,两个元素分别是(其他路径,最后一个文件夹/文件夹名)
import os
#获得当前路径
BASE_DIR = os.path.abspath(__file__)
print(BASE_DIR)#D:\pycharm\project\DAY01\作业\笔记练习.py
#拆分
file_path = os.path.split(BASE_DIR)
print(file_path)#('D:\\pycharm\\project\\DAY01\\作业', '笔记练习.py')
【6】获取文件结尾的文件/文件夹名(basename)
import os
file_path = os.path.dirname(__file__)
print(file_path)#D:\pycharm\project\DAY01\作业
filen_name_basename = os.path.basename(file_path)
print(filen_name_basename)#笔记练习.py
【7】判断当前文件是不是文件夹/文件(isdir,isfile)
-
判断是否是文件isfile
file_path = os.path.dirname(__file__)
print(file_path)#D:\pycharm\project\DAY01\作业
file_path_two = os.path.isfile(file_path)
print(file_path_two)#False
-
判断是否是文件夹isdir
import os
file_path = os.path.dirname(__file__)
print(file_path)#D:\pycharm\project\DAY01\作业
file_path_two = os.path.isdir(file_path)
print(file_path_two)#True
【8】判断当前路径是否是绝对路径(isabs)
file_path = r"作业/01.txt"
print(os.path.isabs(file_path))#False
file_path = r"D:\pycharm\project\DAY01\作业\01.txt"
print(os.path.isabs(file_path))#True
【9】获取当前文件或目录的最后访问时间(getatime)
file_path = os.path.abspath(__file__)
print(file_path)#D:\pycharm\project\DAY01\作业\笔记练习.py
file_time =os.path.getatime(file_path)
print(file_time)#1713527506.5012364
【10】获取当前文件或目录的最后修改时间(getmtime)
file_path = r'D:\pycharm\project'
file_time = os.path.getmtime(file_path)
print(time.strftime("%Y-%m-%d %H-%M-%S", time.localtime(file_time)))#2024-03-28 19-34-18
【11】获取当前文件或者目录的创建时间(getctime)
file_path = r'D:\pycharm\project'
file_time = os.path.getctime(file_path)
print(time.strftime("%Y-%m-%d %H-%M-%S", time.localtime(file_time)))#2024-03-27 16-30-42
【12】获取当前文件的大小(getsize)
import os
file_path = r'D:\pycharm\project\DAY01\作业\ATMuser_pass.py'
file_time = os.path.getsize(file_path)
print(file_time)#18283
【三】文件和文件夹操作
【1】创建文件夹(mkdir)
BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)#D:\pycharm\project\DAY01\作业
file_path = os.path.join(BASE_DIR,"py")#先判断它存在不存在
print(os.path.exists(file_path))#False
if not os.path.exists(file_path):
os.mkdir(file_path)
print(os.path.exists(file_path))#True创建成功
【2】创建多级文件夹(makedirs)
BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)#D:\pycharm\project\DAY01\作业
file_path = os.path.join(BASE_DIR,"py","user","log")#先判断它存在不存在
print(os.path.exists(file_path))#False
if not os.path.exists(file_path):
os.makedirs(file_path)
print(os.path.exists(file_path))#True创建成功
【3】删除单级文件夹(rmdir)
-
只能删除空的文件夹 即使文件夹内有空文件夹也不算空的
#D:\pycharm\project\DAY01\作业\py
print(os.path.exists(py))#检验路径是否存在
os.rmdir(py)#删除文件夹
print(os.path.exists(py))#检验路径是否删除
【4】删除多级文件夹(removedirs)
-
删除多级文件夹目录 路径一定是到最里面那一层并且每个文件夹必须是空的
#D:\pycharm\project\DAY01\作业
print(os.path.exists())#检验路径是否存在
os.removedirs(py)#删除文件夹
print(os.path.exists())#检验路径是否删除
【5】列出当前文件夹下所有文件名(listdir)
BASE_DIR = os.path.dirname(__file__)
print(os.listdir(BASE_DIR))
【6】删除指定文件(remove)
#D:\pycharm\project\DAY01\作业
BASE_DIR = os.path.dirname(__file__)
file_path = "11.py"
data = os.path.join(BASE_DIR,file_path)
print(os.remove(data))#None 说明已经删除
【7】给指定文件夹和文件重命名(rename)
-
给两个绝对路径
-
一个是之前的绝对路径
-
一个是重命名后的绝对路径
-
import os
BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)#D:\pycharm\project\DAY01\练习模块
old_path = os.path.join(BASE_DIR,'img')
print(old_path)#D:\pycharm\project\DAY01\练习模块\img
new_path = os.path.join(BASE_DIR,'new_img')
print(new_path)#D:\pycharm\project\DAY01\练习模块\new_img
os.rename(old_path)
【8】获取当前文件/文件夹详细信息,元信息(stat)
import os
BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)#D:\pycharm\project\DAY01\练习模块
print(os.stat(BASE_DIR))#os.stat_result(st_mode=16895, st_ino=21673573206763848, st_dev=1718800474, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1713531542, st_mtime=1713531541, st_ctime=1713531157)
【9】获取当前工作目录(getcwd)
print(os.getcwd())#D:\pycharm\project\DAY01\练习模块
【10】切换工作(chdir)
BASE_DIR = os.path.dirname(__file__)
# 获取当前工作目录,即当前python脚本工作的目录路径
file_path = os.getcwd()
print(file_path)#D:\pycharm\project\DAY01\练习模块
# E:\PythonProjects\07常用模块学习
img_file_path = os.path.join(BASE_DIR, 'img')
os.chdir(img_file_path)
file_path_new = os.getcwd()
print(file_path_new)#D:\pycharm\project\DAY01\练习模块\img
【补充】执行shell命令
-
执行cmd命令
print(os.system("dir"))
print(os.popen("dir"))
【补充】获取当前系统所对行的默认分隔符
# win \
# mac / linux /
# 输出操作系统特定的路径分隔符
print(os.sep) # \
# 输出当前平台使用的行终止符
print(os.linesep) #
# 输出用于分割文件路径的字符串
print(os.pathsep)# ;
# 输出字符串指示当前使用平台
print(os.name) # nt
# win下为 'nt'
# Linux下为 'posix'
【记住重点】
-
os.path.join() 拼接路径
-
os.path.dirname(
__file__
) 获取当前文件所在的文件夹路径 -
os.path.abspath(
__file__
)获取当前文件所在的文件路径 -
os.path.exists() 判断路径是否存在
-
os.mkdir() 创建单级文件夹
-
os.makedirs() 创建多级文件夹
-
os.makedirs(path, exist_ok=True) 自动创建不存在的多级文件夹路径