• 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__
  • 相关阅读:
    分布式事务04JTA+Atomikos
    【二】认识一下鱼缸里四个阶段的水质
    【三】鱼爷到家如何接驾(漫画版)?正确放鱼5步曲……
    【一】【干货】7个养鱼路上的灾难,32条应急挽救+避免办法
    Elasticsearch使用系列Docker搭建Elasticsearch集群
    Elasticsearch使用系列ES简介和环境搭建
    .Net Core(.NET6)中接入Log4net和NLog进行日志记录
    Elasticsearch使用系列基本查询和聚合查询+sql插件
    .Net Core中无处不在的Async/Await是如何提升性能的?
    Elasticsearch使用系列.NET6对接Elasticsearch
  • 原文地址:https://www.cnblogs.com/lotuslaw/p/14007924.html
Copyright © 2020-2023  润新知