10-包和模块

os模块

  • os:operation system
    • 主要提供跟操作系统相关的函数
    • print(os.name) # nt(Windows)
    • print(os.environ) # 环境变量
    • print(os.environ.get('PATH')) # 获取环境变量中的路径
  • curdir:current directory 当前目录(当前文件夹)
    • .表示当前目录
    • ..表示上一级目录
    • print(os.curdir)
  • print(os.getcwd())
    • 获取当前目录(路径)
      • 绝对路径:从磁盘开始的完整路径
      • 相对路径:从当前目录开始的路径
  • print(os.listdir(r'C:Users86188DesktopPython_Study'))
    • 获取指定目录下的文件夹和文件的名称,会得到一个列表
  • mkdir():make directory 在当前目录下创建(文件夹)目录
    • os.mkdir('罗志祥')
    • os.makedirs('薛之谦/演员/丑八怪') # 可以创建多层目录
  • 删除目录,删除的目录不能是非空目录
    • os.rmdir('罗志祥')
  • 重命名,对文件夹或文件重命名
    • os.rename('薛之谦', '李荣浩')
  • 删除文件
    • os.remove('abc.py')
  • 删除文件
    • os.removedirs()可删除多级空目录
  • 文件属性
    • print(os.stat(r'01_os_Module1.py')) # 写路径时尽量在前面加个r

os.path模块(指向了os)

  • abspath():获取指定文件的绝对路径

    • print(os.path.abspath('01_os_Module1.py'))
  • join():拼接多个路径

    • print(os.path.join(r'C:Users86188DesktopPython_StudyDay102_decorator_parameter.py', 'hello.py'))
  • split(): 分割,把文件路径和文件名分割

    • print(os.path.split(r'C:Users86188DesktopPython_StudyDay111_os_Module1.py'))
  • splittext():把文件的名称和扩展名分割

    • print(os.path.splittext('hello.py'))
  • isdir():判断是否为文件夹(目录)

    • print(os.path.isdir(my_dir))
  • isfile():判断是否为文件夹(目录)

    • print(os.path.isfile(my_dir))
  • isabs():判断是否为绝对路径

    • os.path.isabs(path)
  • exists():判断文件夹/文件是否存在

    • print(os.path.exists(my_dir))
  • getsize():获取文件大小,不能获取文件夹大小

    • print(os.path.getsize(my_file))
  • dirname():父目录

    • print(os.path.dirname(my_file))
  • basename():获取文件名

    • print(os.path.basename(my_file))
  • 当前文件路径,注意区别

    • print(__file__)

    • print(os.path.abspath(_file_))

    • # 当前文件路径
      print(__file__)
      # C:/Users/86188/Desktop/Python_Study/Day11/02_os_Module2.py
      print(os.path.abspath(__file__))
      # C:Users86188DesktopPython_StudyDay112_os_Module2.py
      
  • dir():获取某个模块(Python文件)中的所有属性和函数名

    • import math
    • print(dir(math))
  • os.path.getctime() # 获取文件或文件夹的创建时间

  • os.path.getatime() # 获取文件或文件夹的最后访问时间

  • os.path.getmtime() # 获取文件或文件夹的最后修改时间

查找某个目录下的某种类型文件

  • # 查找某个目录下的py文件和txt文件
    import os
    
    def get_file(path):
        # 判断path是否存在
        if not os.path.exists(path):
            print('路径不存在')
            return
        # 1.获取当前path下的所有子文件和子文件夹名称
        file_list = os.listdir(path)
        # print(file_list)
        # 2.获取子文件的路径
        for file in file_list:
            file_path = os.path.join(path, file)
            # print(file_path)
            # 3.是否为文件且是否为.py或.txt文件
            if os.path.isfile(file_path):
                if file_path.endswith('.py') or file_path.endswith('.txt'):
                    # 打印文件名
                    print(file)
    
    get_file(r'C:Users86188DesktopPython_StudyDay10')
    
    • 首先要判断路径是否存在
    • 注意利用join拼接获取文件的绝对路径

遍历目录

  • import os
    
    # 深度遍历
    # 遍历目录
    def search_dir(path):
        filename_list = os.listdir(path)
        for filename in filename_list:
            # file_path:每个子文件或子文件夹的绝对路径
            file_path = os.path.join(path, filename)
            # 如果是文件
            if os.path.isfile(file_path):
                print('文件名:', filename)
            # 如果是目录
            elif os.path.isdir(file_path):
                print('目录名:', filename)
                # 递归遍历当前目录的子目录
                search_dir(file_path)
    
    search_dir(r'C:Users86188DesktopPython_StudyDay11
    ewdir')
    
    • 深度遍历
    • 注意使用join拼接获取文件的绝对路径
    • 使用递归完成

包和模块

  • 模块的种类
    • 1.内置模块,标准模块
    • 2.自定义模块
    • 3.第三方模块
  • 导入模块
    • import
      • import os
      • import os, math # 不建议这么写
    • form...import...
      • 模糊导入
        • *表示通配符
        • from hello import *
      • 精确导入:只导入需要的变量或函数或类
        • from hello import age, login
  • 模块的用法
    • 用法:模块名.函数名()
      • math.pow(2, 3)
    • 别名
      • import random as rd
      • print(rd.random())

  • 就是一个包含_init_.py的文件夹
  • 导入
    • 格式:import 包.模块
      • import aaa.bbb
      • print(aaa.bbb.sex)
    • from...import...
      • from aaa import bbb # 从import后面开始
      • print(bbb.sex)
    • 推荐使用下面的方式导入包中的模块
      • from aaa.bbb import sex
      • print(sex)

第三方包管理

  • 安装第三方包
    • 方式一:在Pycharm中安装
      • a.在需要安装的包名上按alt+enter选择'install package request'
      • b.在file->settings=>project=>点击右上角的+进行安装
    • 方式二:使用命令安装pip
      • pip命令 -V 查看pip的版本
      • pip install package 安装包(默认会从国外的网站下载安装)
      • pip install package -i 国内源(不会被墙)-豆瓣源&清华源
      • pip uninstall package 卸载包
      • pip list 列出(查看)所有的包
      • pip freeze 列出(查看)你安装的包(除了自带的pip, setuptools)
      • pip show package 显示包详情

name属性

  • __name__的作用:如果不想让模块中的某些代码执行,可以通过属性仅仅调用程序中的一部分功能,写在if判断中的代码只有当前模块被执行的时候才会被执行,检测到是其他的文件在使用当前的模块,则if语句中的代码不会被执行
    • if __name__ == "__main__":
      • print(__name__) # __main__
原文地址:https://www.cnblogs.com/lotuslaw/p/14007924.html