2020625(目录相关)

    技术2024-10-22  8

    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)

    Processed: 0.022, SQL: 9