• python目录操作


    目录操作

    在python中,没有提供直接操作目录的函数或者对象,需要使用内置的os和os.path模块实现

     

    os模块是python内置的与操作系统功能文件系统功能相关的模块

    该模块中的语句的执行结构通常与操作系统有关,在不同的操作系统上执行,所得到的的结果可能不同

     

    常用的目录操作主要有:

    判断目录是否存在

    创建目录

    删除目录

    重命名目录

    遍历目录等

     

    使用os模块或者os.path模块时,需要先import

     

    import os

     

    os.getcwd():返回当前的工作目录

    os.listdir(path):返回列表,存放指定路径下的文件和目录信息

    os.mkdir(path[,mode]):创建目录,只能创建path中的最后一级目录,如果该目录的上一级不存在,则会抛出异常,类似mkdir不加参数

    os.mkdirs(path1/path2...[,mode]):创建多级目录,该函数用递归的方法创建目录 ,类似mkdir -p

    os.rmdir(path):删除空目录

    os.removedirs(path1/path2...):递归删除多级空目录

    os.chdir(path):把path设置为当前工作目录

    os.walk(top[,topdown][,onerror):遍历目录树,该方法返回一个元组,包括所有路径名、所有目录列表和文件列表3个元素

     

    os.path模块也提供了一些操作目录的函数

    os.path.abspath(path):用于获取文件或目录的绝对路径

    os.path.exists(path):用于判断文件或目录是否存在,如果存在则返回True,否则返回False

    os.path.join(path,name):将目录或者文件名拼接起来

    os.path.splitext():分离文件名和扩展名

    os.path.basename(path):从一个目录中提取文件名

    os.path.dirname(path):从一个路径中提取文件路径,不包括文件名

    os.path.isdir(path):用于判断是否是有效路径

     

    示例1:创建目录

    创建目录前,先判断目录是否存在,如果不存在,则创建

    if not os.path.exit(path):

    os.mkdirs(path)

    else:

    pass

    示例2:删除非空目录

    使用os.rmdir()或者os.removedirs()只能删除空目录,删除非空目录需要使用python内置的标准模块shutil的rmtree()函数实现

    示例3:os.walk()遍历目录

    python中,os的walk()函数用于实现遍历目录的功能

    os.walk(top[,topdown][,onerror][,followlinks])

     

    top:用于指定要遍历内容的根目录

    topdown:可选参数,用于指定遍历的顺序,如果是True,表示自上而下遍历;如果是False,代表自下而上遍历,默认True

    onerror:可选参数,用于指定错误处理方式,默认为忽略,如果不想忽略,可以指定一个错误错误处理函数,通常采用默认

    followlinks:可选参数,默认情况下,walk函数不会向下转换成解析到目录的符号链接,将该参数值设置为True,表示用于指定在支持的系统上访问由符号链接指向的目录

    返回值:返回一个包括3个元素(dirpath,dirnames,filenames)的元组的生成器对象

    • dirpath:表示当前遍历的路径,是一个字符串
    • dirnames:表示当前目录下包含的子目录,是一个列表
    • filenames:表示当前路径下包含的文件,也是一个列表

     

    >>> for a,b,c in os.walk("D:\python\python3.6.4\hjc"):

            for i in b:

                    print(os.path.join(a,i))#所有的目录

            for i in c:

                    print(os.path.join(a,i))#所有的文件

    示例4:拼接路径

    把两个路径拼接为一个路径时,不要使用字符串拼接,而要使用os.path.join()函数,这样可以正确处理不同操作系统的路径分隔符

    如果采用字符串拼接路径和文件名,path+'分隔符'+file,这里的分隔符对于不同的系统不一样

    windows系统的路径分隔符为"",linux系统的路径分隔符为"/"

    os.path.join()会自动查找当前系统的路径分隔符

     

    示例5:windows上的路径

    windows系统的路径分隔符为"",python中""代表转义字符,直接使用windows路径会报错

    解决办法:

    • 对路径分割符""进行转义,即将""替换为"\"
    • 将""替换为"/"
    • 不进行转义,在path前加"r"或者"R",该字符串将原样输出

     

    >>> import os

    >>> os.chdir('C:UsershjcDesktoppython')

    SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated UXXXXXXXX escape

    >>> os.chdir(b'C:UsershjcDesktoppython')

    >>> os.getcwd()

    'C:\Users\hjc\Desktop\python'

     

    在IDLE中不行,但是在脚本的参数中可以,估计是自动做了转换

    代码:

    import os,sys

    file = sys.argv[1]
    print(file)
    if os.path.exists(file):
    os.chdir(file)
    print(os.getcwd())
    else:
    print('not exits')

     

    运行:

    D:projectsdemo>python test.py C:UsershjcDesktoppython

    C:UsershjcDesktoppython

    C:UsershjcDesktoppython

  • 相关阅读:
    C#基于接口的编程
    在window组件服务中建立WCF宿主
    给WWF传递参数
    创建singleton模式的工作流引擎
    WCF消息交换模式之Duplex
    SqlServer中查询出多条记录变成一个记录(行变列)
    WCF三种消息交互模式MEP
    Asp.net实现在线截图!
    WWF之跟踪服务WorkFlowTrack
    hdu 2604 Queuing (Matrix)
  • 原文地址:https://www.cnblogs.com/jeancheng/p/13345632.html
Copyright © 2020-2023  润新知