Python3目录操作

发布时间:2019-09-28 08:39:10编辑:auto阅读(2061)

    Python3 目录操作

    常见的目录操作:

    • 显示当前目录
    • 切换目录
    • 新建、删除目录、移动、复制
    • 显示目录内容
    • 判断目录、文件是否存在

    目录操作常用的函数如下:

    • os.listdir() # 列出目录下的内容
    • os.getcwd() # 显示当前工作路径
    • os.chdir() # 切换工作目录
    • os.mkdir() # 新建目录
    • os.path.exists() # 判断目录是否存在
    • os.path.isdir() # 判断是否是目录
      示例代码1:
    #!/usr/bin/python3
    
    import os
    test_path = r'D:\\python'
    print(os.listdir(test_path))

    输出内容为一个列表,由于内容太多这里暂不贴出了
    示例代码2:

    #!/usr/bin/python3
    
    import os
    print(os.getcwd())     # 获取当前工作目录
    os.chdir('..') # 切换目录
    print(os.getcwd())
    os.mkdir('testdir')   #创建路径
    print(os.listdir())

    输出:
    'D:\python\jupyter'
    'D:\python'
    ['.ipynb_checkpoints',
    'bak',
    'jupyter',
    'project',
    'test.txt',
    'testdir',
    'Untitled.ipynb',
    ]

    路径就是一条字符串

    • 左右斜线
    • os.path.join()
    • os.path.exists()
    • os.path.isdir()

    示例代码:

    #!/usr/bin/python3
    
    import os
    
    url1 = os.path.join('a', 'b')    # 路径拼接
    print(url1)
    
    print(os.path.exists(r'D:\python'))     # 判断路径存不存在
    print(os.path.isdir(r'D:\python'))      # 判断是否是路径

    输出:
    'a\b'
    True
    True

    相对路径与绝对路径

    • os.path.abspath()
    • os.path.isabs()
    • os.path.relpath()

    示例代码:

    #!/usr/bin/python3
    
    import os
    
    url1 = os.path.abspath('.')  # 得到.的绝对路径
    print(url1)
    
    print(os.path.isabs('.'))   # 判断是否是绝对路径
    url2 = os.path.relpath('testdir', 'D:\python\testdir')   # 得到testdir的相对路径
    print(url2)

    输出:
    'D:\python'
    False
    '..\python\testdir'

    命名管理

    路径各级名称

    • path.split(os.path.sep) 前边的path是指的是一个变量
    • os.path.basename()
    • os.path.dirname()
      删除文件shutil模块
      • os.unlink
      • shutil.rmtree(path)
        复制、移动
      • copy
      • copytree
      • move

    示例代码1:

    #!/usr/bin/python3
    
    import os
    
    dirname = r'D:\python\testdir'
    print(os.path.sep)    # 显示路径分隔符
    namelist = dirname.split(os.path.sep)
    print(namelist)
    
    namelist1 = os.path.split(dirname)  # 用最后的一个分隔符分开
    print(namelist1)
    
    filename = os.path.splitext(r'D:\python\xx.py')  # 能取到目录下文件的后缀名
    print(filename)
    
    urlname = os.path.basename(dirname)    # 找到最后一个目录的名字
    print(urlname)
    
    filename1 = os.path.basename(r'D:\python\xx.txt')  # 还可以取到文件名
    print(filename1)
    
    urlname1 = os.path.dirname(path)    # 取除最后一个目录之前的部分
    print(urlname1)
    

    输出:
    '\'
    ['D:', 'python', 'testdir']
    ('D:\python', 'testdir')
    ('D:\python\*', '.py')
    'testdir'
    'xx.txt'
    'D:\python'

    示例代码2:

    #!/usr/bin/python3
    
    import os
    import shutil
    
    os.unlink(r'D:\python\xx.txt')     # 删除文件xx.txt
    shutil.rmtree('testdir') # 删除testdir目录
    shutil.copytree('./test', './test1')   # 复制目录
    shutil.copy('./ss.txt', './ss1.txt')   # 复制文件
    shutil.move('./ss1.txt', 'ss2.txt')     # 移动(重命名)文件

    只要我想要的文件格式

    文件属性

    • os.path.getsize()
    • os.path.isfile()
    • os.stat()

    后缀名

    • split
    • [-3:]
    • re
    • endswith

    示例代码1:

    #!/usr/bin/python3
    
    import os
    
    filename = r'D:\python\test.py'
    os.path.getsize(filename)/1024    # 查看文件大小,以字节为单位
    
    dirname = r'D:\python'    # 获取目录的大小
    os.path.getsize(dirname)/1024
    
    os.path.isfile(filename)         # 判断是否为文件
    os.stat(filename)       # 查看文件属性
    
    filename[-3:]     # 找后缀名,不通用
    os.path.splitext(filename)  # 取后缀名
    filename.endswith('.py')  # 是否以.py结尾
    

    示例代码2:

    #!/usr/bin/python3
    
    import os
    import re
    
    # 以正则表达式取后缀名
    
    filename = r'D:\python\test.py'
    os.chdir('D:/python')
    re_filename = re.compile('(.*py$)')
    name = re_filename.match(filename).group()
    print(name)
    
    # os.walk 遍历目录,找到对应.py的后缀名
    for root, dirs, files in os.walk(r'D:\python'):
        for name in files:
            file = os.path.join(root,name)
            if re_filename.match(file):
                print(name)

    压缩备份文件

    使用zipfile

    • 创建压缩文件
    • 查看信息
    • 解压缩

    示例代码:

    #!/usr/bin/python3
    
    import os
    import zipfile
    
    os.chdir('test')
    my_zip = zipfile.ZipFile('bak.zip', 'w')    # 创建一个bak.zip
    
    my_zip.write('ss.txt', compress_type=zipfile.ZIP_DEFLATED)     # 向bak.zip中添加文件
    my_zip.write('ss2.txt', compress_type=zipfile.ZIP_DEFLATED)    # 添加文件
    my_zip.close()     # 关闭bak.zip文件
    
    # 查看
    aa = zipfile.ZipFile('bak.zip')
    aa.namelist()       #查看压缩文件中的内容
    
    aa.getinfo('ss.txt')   # 查看压缩文件中内容的属性
    aa.close()
    # 解压缩
    xx = zipfile.ZipFile('bak1.zip')   
    xx.extractall('../test1')     # 解压到上一级目录
    xx.close()

关键字