python模块
项目目录结构
模块定义
文件引用
python程序结构:package包、module模块、function方法
模块是代码量变得相当大了之后,为了将需要重复使用的有组织的代码放在一起,这部分代码可以被其他程序引用,从而使用该模块里的函数等功能,引用的过程叫做导入(import),在python中,一个文件(以“.py”为后缀名的文件)就叫做一个模块,导入模块的写法:import module1[,module2...[,moduleN]] 或 from moduleimport<name[,name2,...[,nameN]]>
系统内置的模块(标准库):sys、time、os、json模块等
"""
python安装好之后自带的一些非常有用的模块(sys、os、time、json模块等)
使用关键词“import+模块名称”导入模块,同一个模块不管执行多少次“import”,只会被导入一次,import应该放在代码的顶端
"""
import sys
import time
print(sys.argv) #打印出执行文件的绝对路径 打印结果 ['D:\\software\\python\\project\\project1\\test_0108.py']
time.sleep(3) #等到3秒执行下一个操作
print("exit") #打印出 exit
# 系统内置模块,也就是常说的标准库,可以在当前项目下对目录和文件进行增删等操作
import os
# 创建目录,当前操作文件所在的文件夹下创建一个目录(也可以说是文件夹)
# os.mkdir('files')
# 查看当前操作文件所在的文件夹下所有的文件包含目录
print(os.listdir('./'))
# 删除文件
# os.removedirs('file_name')
# 查看当前操作文件的完整的绝对的路径
print(os.getcwd())
# 在当前操作文件所在的包下创建文件夹/包,并且在里面创建一个文件并写入内容
# 判断当前文件是否存在,false不存在
print(os.path.exists('file_folder1'))
# 创建文件夹
if not os.path.exists('file_folder1'):
os.mkdir('file_folder1')
# 在文件夹下创建一个文件并写入内容
if not os.path.exists('file_folder1/test.txt'):
w = open('file_folder1/test.txt', 'w')
w.write('hello')
w.close()
# time模块或者说time标准库,获取当前时间以及时间格式的模块,datetime模块是对time模块的二次封装
import time
# 生成时间戳:返回秒数,从1970年1月1日 00:00:00 (UTC)开始计算到目前的秒数
print(time.time())
# 生成国外时间格式
print(time.asctime())
# 时间戳转成时间元组
print(time.localtime())
# 将当前的时间戳转换成带格式的时间
print(time.strftime('%Y年%m月%d日 %H:%M:%S', time.localtime()))
# 获取两天前的时间
now_time = time.time()
two_day_before = now_time - 60*60*24*2
t = time.localtime(two_day_before)
print(time.strftime('%Y年%m月%d日 %H:%M:%S', t))
# 获取两天后的时间
two_day_after = now_time + 2*24*60*60
tt = time.localtime(two_day_after)
print(time.strftime('%Y年%m月%d日 %H:%M:%S', tt))
# urllib.request是对网络请求的一个库
import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')
print(response.status)
print(response.read())
print(response.headers)
import math
# 返回大于5.5的最小整数6
print(math.ceil(5.5))
# 返回小于5.5的最大整数5
print(math.floor(5.5))
# 返回开平方根的浮点数4.0
print(math.sqrt(16))
第三方的开源模块:通过pip install进行安装,有开源的代码,必须知道该库名称,可以在官网或者pypi上搜索,比如MySQL的驱动程序,web框架flask,科学计算numpy等。numpy是python语音的扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。(运行Windows的cmd窗口,输入pip install numpy,即可在本地环境安装成功),如果pycharm中执行文件是在虚拟环境里,需要在pycharm中再次安装。可以在官网学习模块的方法等的调用(PyPI · The Python Package Index,查看documentation→user guide)
pytest第三方库:相当于python自带的unittest模块,pytest单元测试框架,pytest和allure搭配使用可以生成测试报告,allure是生成测试报告的第三方库,怎么安装pytest库呢:在Windows系统的cmd窗口直接输入 pip install pytest,进行安装,可以安装到本地的环境
requests第三方库:是进行网络访问的一个库,安装与pytest安装一样,输入pip install requests
自定义模块:自己写的模块,对某段逻辑或者某些函数进行封装后供其他人员或者其他函数调用,模块是变量、函数、或类组成的,自定义模块的命名不能与系统内置模块重名,否则将不能导入系统内置模块,例如自定义了sys.py模块,那系统内置的sys模块就不能调用了
#自定义模块
name_is_a_very_long_name = "Tom"
def add(a,b):
return a + b
class index():
def sub(self,a,b):
return a - b
#当前执行文件为自定义模块文件
print(name_is_a_very_long_name)
print(add(1,4))
i = index()
print(i.sub(4,2))
#当前执行文件非自定义模块文件
import wumodule_1
from wumodule_1 import * #导入模块中全部的属性、方法等
from wumodule_1 import name_is_a_very_long_name as n #如调用的模块中的属性、方法、类名字很长时,可以再自定义一个简单的名
print(n) #调用属性
print(add(1,2)) #调用方法
模块的作用域:搜索路径,当导入一个模块时,python解析器对模块位置的搜索顺序是:1、当前目录;2、如果不在当前目录,python则搜索在sell变量pythonpath下的每一个目录;3、如果都找不到的话,python会查看默认路径,unix下默认路径一般为/usr/local/lib/python/。模块搜索路径存储在system模块的sys.path变量中,变量包含当前目录,pythonpath和安装过程决定的默认目录。
模块的好处:可维护性,可直接调用,不用再从零开始写代码,节约工作时间,避免函数和变量名称重复,在不同模块中可以存在相同名字的函数和变量名(不要和系统内置模块重名)