仅记录个人学习Python所学,学识浅薄,若有错误欢迎指出。文章可能会不太完善,后续可能会继续更新。
一、包
包:初期理解为文件夹
作用:一种管理Python模块命名空间的形式,采用"点语法" os.path
包和文件夹之间的区别:Python的包中有一个特殊的文件__init__.py文件,前期里面不写任何内容,但是,就是为了告诉编译器,当前这个目录不是普通目录,是一个包
创建方式:选中工程,创建Python package
包存在的意义:在团队开发的过程中,为了解决文件命名冲突的问题,只要保证最上层的包命名不相同,就不会与别人的发生冲突
二、模块
为了解决维护问题,一般情况下,在一个完整的项目中,会将特定的功能分组,分别放到不同的文件中,在使用的过程中,可以单独维护,各个不同的文件之间互不影响,每个.py文件就被称为一个模块,通过结合包的使用来组织文件
封装思路: 函数 => 类 => 模块 => 包 => 项目
优点:
a.提高了代码的可维护性
b.提高了代码的复用性【当一个模块被完成之后,可以在多个文件中使用】
c.引用其他的模块【第三方模块】
d.避免函数名和变量的命名冲突
import os
# os 模块 operation system 操作系统
#
print(os.name)
# nt----->Windows
# posix------>Linux, Mac os
# 环境变量
print(os.environ)
# curdir: current directory 当前目录
print(os.curdir) # . 表示当前目录 .. 上级目录
# 获取当前目录(路径)
# 绝对路径 从盘符根目录开始的完整路径
# 相对路径 从当前目录(或项目目录)开始的路径
print(os.getcwd())
# C:\Users\xx\Desktop\Python2004\week03\day11\code
# 掌握
# listdir():获取指定路径下的所有文件或目录的名字,返回一个列表
print(os.listdir(r'C:\Users\xx\Desktop\Python2004\week03\day11\code'))
# mkdir(): make directory 新建目录
# os.mkdir('giao哥')
# os.makedirs('a/b/c') # 可以递归创建目录
# 删除目录 rmdir():只能删除空目录
# os.rmdir('giao哥')
# os.rmdir('a') # [WinError 145] 目录不是空的。: 'a'
# 删除文件
# os.remove('a.txt')
# 重命名
# os.rename('a', 'aa')
# os.rename(r'aa/a.txt', r'aa/1.txt')
# 文件属性(了解)
# print(os.stat('aa/1.txt'))
# os.path
# os.path.join() : 将多个路径拼接
# print(os.path.join(r'C:\Users\xx\Desktop\Python2004\week03\day11\code\aa', r'b\1.txt'))
# os.path.split() : 拆分路径
# print(os.path.split(r'C:\Users\xx\Desktop\Python2004\week03\day11\code\aa'))
# os.path.splitext(): 拆分文件名和拓展名
# print(os.path.splitext('ccc.py')) # ('ccc', '.py')
# os.path.getsize(): 获取文件大小
print(os.path.getsize(r'C:\Users\xx\Desktop\Python2004\week03\day11\code\day_11test01.py'))
# os.path.abspath(): 获取指定文件的绝对路径
print(os.path.abspath('1.txt'))
# 当前所在文件路径 __file__:当前文件名
print(os.path.abspath(__file__))
dir_path = r'C:\Users\xx\Desktop\Python2004\week03\day11\code'
file_path = r'C:\Users\xx\Desktop\Python2004\week03\day11\code\day_11test01.py'
# os.path.exists() : 文件或目录是否存在
print(os.path.exists(dir_path))
print(os.path.exists(file_path))
# os.path.isfile(): 是否为文件
print(os.path.isfile(dir_path)) # False
print(os.path.isfile(file_path)) # True
# os.path.isdir(): 是否为目录
print(os.path.isdir(dir_path)) # True
print(os.path.isdir(file_path)) # False
# os.path.dirname() : 父目录
print(os.path.dirname(dir_path))
# os.path.basename(): 文件名
print(os.path.basename(file_path))
当文件创建完成后 再次执行代码会报错
查找目录下指定类型文件
import os
# 查找指定目录下的所有py文件和txt文件名称
def get_file(path):
if not os.path.exists(path):
return '文件不存在'
file_list = os.listdir(path)
# print(file_list)
for file_name in file_list:
# 获取绝对路径
file_path = os.path.join(path, file_name)
# 是否为文件
if os.path.isfile(file_path):
_, file_type = os.path.splitext(file_path)
if file_type == '.py' or file_type == '.txt':
print(file_name)
get_file(r'C:\Users\xx\Desktop\Python2004\week03\day11\code')
遍历文件夹中文件
import os
# 遍历目录 : 深度遍历
def search_dir(path):
# 1.获取目录下的所有文件名或目录名
file_list = os.listdir(path)
# 2.遍历每个子目录和子文件
for file in file_list:
# 3. 获取子文件的绝对路径(完整路径)
file_path = os.path.join(path, file)
# 4. 判断是文件还是目录
if os.path.isfile(file_path):
print("文件名:", file)
else:
print("目录名:", file)
# 继续找子目录下的所有文件和目录
search_dir(file_path)
search_dir(r'C:\Users\xx\Desktop\Python2004\week03\day11\code\newdir')
import math
# 包: 带有__init__.py文件的文件夹
# 模块: 一个模块就是一个Python文件
# 1. 内置模块:Python提供的模块
# 2. 自定义模块:自己写的模块
# 3. 第三方模块
# 导入模块
# 1.使用import
# 2.使用from-import
# import
# 自定义模块
import module1
print(module1.name, module1.age)
module1.show('蔡徐坤', 25)
# 2.from-import
# from module1 import name,age,show
# 模糊导入:导入所有
from module1 import *
print(name,age)
show('张艺兴', 29)
# 别名:小名
import random as rd
print(rd.random()) # 不可以使用原名
from random import randrange as rr
print(rr(1,3))
# 包
# import package1.m2 # 不推荐
# print(package1.m2.sex)
# from package1 import m2
# print(m2.sex)
from package1.m2 import sex
print(sex)
module
import math
print('hello')
name = '鹿晗'
age = 30
def show(name, age):
print(name, age)
# show(name, age)
print(__name__)
# 1.如果直接运行当前文件,则打印:__main__
# 2.如果是在其他文件导入当前模块运行,则打印 :module1
# 模块名
if __name__ == '__main__':
# 做测试调用
show('mask', 45)
# 查看包里所有变量名,函数名等
print(dir(math))
三、使用pip安装第三方模块
这里使用cmd或pycharm中的Terminal 都可以
# 如何安装或下载第三方模块
# 1.使用pycharm安装
# 2.使用pip安装
# pip install requests 安装
# pip uninstall requests 卸载
# pip list 显示所有包
# pip freeze 显示自己安装的包(不包含pip和setuptools)
# pip -V 查看版本
# pip show requests 查看详情