OS模块
os模块是operation system(操作系统)的简写方式,主要用于在系统操作上进行文件操作使用,如对文件夹进行增删改查等功能
import os
from posixpath import join
import shutil #删除不为空的目录导入的模块
# 创建一个递归函数用于创建多层目录
def mkdir(path):
if not os.path.isdir(path): #判断是否为路径
mkdir(os.path.split(path)[0])
else:
return
os.mkdir(path) #创建目录
mkdir(r'C:\Users\User\Desktop\os新建文件夹\img')
# 也可以使用python的makedirs()创建多层目录
os.makedirs(r'C:\Users\User\Desktop\os-makedirs\img1')
# # 删除目录 os.rmdir(path)
os.rmdir(r'C:\Users\User\Desktop\os-makedirs\img1') #要删除的空目录img1,如果删除的文件夹不存在,则会报错(当前目录不存在)
# 删除不为空的目录shutil.rmtreel()
if os.path.exists(r'C:\Users\User\Desktop\os-makedirs\img1'):#判断目录是否存在
shutil.rmtree(r'C:\Users\User\Desktop\os-makedirs\img1') #存在就删除
print('目录删除成功')
else:
print('目录不存在')
# # 获取当前的操作系统,nt代表是window系统
print(os.name)
print(os.getcwd()) #获取当前的工作目录
print(os.path.abspath(r'接单代码\1688.py')) #获取1688.py的绝对路径
print(os.path.exists(r'D:\VScode\Python')) #exists()用于判断路径或者文件是否存在,不区分路径的大小写
# 创建文件夹 os.mkdir(path,mode = 0o777)
os.mkdir(r'D:\VScode\os新建文件夹') #创建目录,但是只能创建一个文件夹
print('ok')
# # 可以通过使用exists先判断目录是否存在,而后再创建文件夹 如下面的代码(如果 D:\VScode\Python 不存在,则进行创建,否则就输出提示信息,该文件夹已存在
if not os.path.exists(r'D:\VScode\Python'):
os.mkdir(r'D:\VScode\Python')
else:
print('该文件夹已存在')
''' 遍历目录 os.walk()'''
#语法: os.walk(top[,topdown][,onerror][,followlinks])
#必选:top 可选:topdown,onerror,followliks
path = os.walk(r'D:\VScode\Python')
for p in path: #输出遍历的结果
print(p,'\n')
# 得到更直观的效果
path1 = r'C:\Users\User\Desktop\新建文件夹'
print(path1,'目录下包含的文件和目录')
for root,dirs,files in os.walk(path1,topdown=True): #遍历指定目录,使用从上到下的顺序
for name in dirs:
print(os.path.join(root,name)) #输出遍历到的目录使用join连接在一起下面for循环同理
for name in files:
print('\t',os.path.join(root,name))
'''高级文件操作'''
# os.remove() 删除文件 或者文件夹
# os.rename('原路径','修改后') 重命名文件或者文件夹,只能修改位置最后一个文件或者文件夹
# os.stat(path) 获取文件的基本信息,
# os.remove(r'C:\Users\User\Desktop\新建文件夹\111\新建txt文件.txt') #删除指定的文件
# 获取文件信息
def formatTime(longtime): #格式化时间
import time
return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(longtime))
def formatByte(number): #格式化文件大小
for (scale,label) in [(1024*1024*1024,"GB"),(1024*1024,'MB'),(1024,'KB')]:
if number >= scale:
return '%.2f %s' %(number*1.0/scale,label)
elif number == 1:
return "1字节"
else: #小于1kb
byte = '%.2f'%(number or 0) #给出number或者0
return (byte[:-3] if byte.endswith('.00') else byte) + '字节' #判断byte末尾三位数是不是以.00结尾。如果不是直接输出这个值
fileinfo = os.stat(r'C:\Users\User\Desktop\新建文件夹\index.html') #获取文件的基本信息
print('文件的完整路径' ,os.path.abspath(r'C:\Users\User\Desktop\新建文件夹\index.html')) #获取文件完整路径
print('索引号',fileinfo.st_ino)
print('设备名',fileinfo.st_dev)
print('文件大小',formatByte(fileinfo.st_size))
print('最后一次访问时间',formatTime(fileinfo.st_atime))
print('最后一次修改时间',formatTime(fileinfo.st_mtime))
print('最后一次状态变化时间',formatTime(fileinfo.st_ctime))
这里仅对OS模块的部分对文件的操作做了总结。仅作为学习总结!!!如有错误的地方,希望各位BigFish能做出指正