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:\Users\86188\Desktop\Python_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:\Users\86188\Desktop\Python_Study\Day10\02_decorator_parameter.py', 'hello.py'))
-
split(): 分割,把文件路径和文件名分割
- print(os.path.split(r'C:\Users\86188\Desktop\Python_Study\Day11\01_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:\Users\86188\Desktop\Python_Study\Day11\02_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:\Users\86188\Desktop\Python_Study\Day10')
- 首先要判断路径是否存在
- 注意利用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:\Users\86188\Desktop\Python_Study\Day11\newdir')
- 深度遍历
- 注意使用join拼接获取文件的绝对路径
- 使用递归完成
包和模块
- 模块的种类
- 1.内置模块,标准模块
- 2.自定义模块
- 3.第三方模块
- 导入模块
- import
- import os
- import os, math # 不建议这么写
- form...import...
- 模糊导入
- *表示通配符
- from hello import *
- 精确导入:只导入需要的变量或函数或类
- from hello import age, login
- 模糊导入
- import
- 模块的用法
- 用法:模块名.函数名()
- 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)
- 格式:import 包.模块
第三方包管理
- 安装第三方包
- 方式一:在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 显示包详情
- 方式一:在Pycharm中安装
name属性
- __name__的作用:如果不想让模块中的某些代码执行,可以通过属性仅仅调用程序中的一部分功能,写在if判断中的代码只有当前模块被执行的时候才会被执行,检测到是其他的文件在使用当前的模块,则if语句中的代码不会被执行
- if __name__ == "__main__":
- print(__name__) # __main__
- if __name__ == "__main__":