Import os首先引入一个os的包
os.getcwd()查看当前在什么目录下,表示交互模式显示的路径
Dir(os):查看os的方法
os.makedirs():创建多级目录eg: os.makedirs("w/w/t")创建了3级目录,也不需要写绝对路径
os.mkdir()创建单个目录
os.rmdir(“xxx”)删除单级目录
os.removedirs("w/w/t")删除多级目录#删除的只能是为空,遇到非空会停止
Import shutil 中的rmtree会把目录非空或者空的都能删除,一般不使用,容易误操作
os.rename("lost.txt","lost"):重命名目录
os.chdir("d:\\Python3.8")切换目录
os.chdir(".."):返回目录上一级
os.listdir():当前路径包含哪些目录
os.path.split():将目录分解为目录名和文件名
os.path.splitext():分解文件名的扩展名
os.path.isfile(“文件”):判断一个路径是否是文件
os.path.isdir(“路径”):判断一个路径是否存在目录
举一个栗子:
os.mkdir("lost")#创建一个目录
os.chdir("lost")#切换到此目录
os.getcwd()#查看是否进入
os.path.join(“dir_name”,”file_name”)#拼接路径。dir_name目录名,file_name文件名
--》'd:\\lostt'#结果展示
open("wwt.txt","w")#新建一个文件,不需要写绝对路径,因为已经在此目录下
举一个栗子:建立一个5级目录的深度,每一层级的名字叫做“荷叶连田田1-10”
每一层目录下面,新建2个文件,文件1的内容是目录名,文件2的内容是“江南可采莲”
算法:首先引入包,建目录然后进入目录在目录里面建文件关闭
import os
os.chdir("d:\\lost")
for i in range(1,6):
dirname="荷叶连田田"+str(i)
os.makedirs(dirname)
os.chdir(dirname)
fp=open("文件1.txt","w",encoding="utf-8")
fp.write(dirname)
fp.close()
fp=open("文件2.txt","w",encoding="utf-8")
fp.write("江南可采莲")
fp.close()
print("新建成功")
os.path.split():将目录分解为目录名和文件名
dir_name=os.path.split("D:\lost\聊赠一枝春1\文件2.txt")
dir_name
>>>('D:\\lost\\聊赠一枝春1', '文件2.txt')
dir_name=os.path.split("D:\lost\聊赠一枝春1\文件2.txt")[0]#[0]表示坐标位置第一个
dir_name
>>>'D:\\lost\\聊赠一枝春1'
file_name=os.path.split("D:\lost\聊赠一枝春1\文件2.txt")[1]
file_name
>>> '文件2.txt'
或者使用直接封装一个函数
dir_name="D:\lost\聊赠一枝春1\文件2.txt"
os.path.dirname(dir_name)#获取目录名
>>> 'D:\\lost\\聊赠一枝春1'
file_name="D:\lost\聊赠一枝春1\文件2.txt"
os.path.basename(file_name)#获取文件名
>>> '文件2.txt'
判断文件在不在的方法
举个栗子:
if not os.path.exists("大漠孤烟直.txt"):#判断如果文件不在就执行if
fp=open("大漠孤烟直.txt","w",encoding="utf-8")#创建文件
fp.write("长河落日圆")
fp.close()
os.path.splitext()可以切割文件名和扩展名
file_name="文件1.txt"
>>> os.path.splitext(file_name)
('文件1', '.txt')
判断是文件还是目录
os.listdir()#查看该路径下所有目录或者文件
>>>['12', 'i', 'testing.txt', '两只黄鹂鸣翠柳1', '大漠孤烟直', '聊赠一枝春1']
os.path.isfile("12")
>>> False
os.path.isdir("12")
>>> True
#统计当前的文件有几个,目录有几个
import os
dir_path="d:\\lost"
file_count=0
dir_count=0
for i in os.listdir(dir_path):#遍历当前所有内容
obj_path=os.path.join(dir_path,i)#相对路径的拼接变成,绝对路径
if os.path.isfile(obj_path):#判断是否是文件
file_count+=1
else:#判断是否是目录
dir_count+=1
print("目录有%s个"%dir_count)
print("文件有%s个"%file_count)
#os.path.join(dir_name,file_name)#拼接路径。dir_name目录名,file_name文件名
dir_name="e:\\lost"
file_name="testing.txt"
os.path.join(dir_name,file_name)
>>> 'e:\\lost\\testing.txt'
#统计所有的文件有几个,目录有几个
import os
file_count=0
dir_count=0
for root,dirs,files in os.walk("d:\\lost"):#以递归的方式一层一层的去遍历,root表示路径
for file in files:#files列表存储的当前目录下所有文件的名字
file_count+=1
print("当前目录是:",root)
for dir in dirs:#dirs列表存储的当前目录下所有目录的名字
dir_count+=1
print(file_count)
print(dir_count)