python学习之【包和内置模块】

news2024/11/22 21:03:11

前言

接上篇文章 python学习之【模块】,这篇文章接着学习python中的包

python中的包

包是一种用“点式模块名”构造Python模块命名空间的方法。在包中存放着一些功能相近的模块。
在这里插入图片描述

包的创建和导入

包的创建

我们可以在pytarm中创建一个package文件,当我们创建完成后会自动创建一个__init__.py文件,这时我们就完成了一个包文件的创建。

也就是这个__init__.py文件,可以让我们判断出哪些是python当中的包,目录中通常不含有__init__.py文件。

创建完成包文件以后,我们就可以在该文件目录下创建模块,当我们导入包的时候亦可导入包中所含的模块。

在这里插入图片描述

包的导入

包的导入语法为:import 包名.模板块

假如我们在pack1包中的模块index1中写入a=100;在index2中写入b=200,然后在创建的目录

directory1中的文件demo1中进行包的导入:

# 在该文件中导入pack1包中的模块
# 注意导入的包所在的路径
import mokuai.pack1.index1
print(mokuai.pack1.index1.a)#输出模块中的变量a

在这里插入图片描述

我们也可以为需要导入的模块进行别名:

在这里插入图片描述
需要注意的是利用import导入时,import后面只能跟包名或模块名;

当然我们也可以利用from...import的方式进行导入可以导入包,模块,函数或者是模块中的变量:

# 使用from....import方式进行导入
from mokuai.pack1 import index2
print(index2.b)
from mokuai.pack1.index2 import b
print(b)
from  mokuai.pack1.index1 import a as index__a
print(index__a)

在这里插入图片描述

python中的内置模块

上篇文章中我们提到了python中的一部分内置函数,这里简单的运用下这些内置模块:
在这里插入图片描述

os模块

#os模块
import os
# 获取当前工作目录,也就是当前python脚本工作的目录路径
print(os.getcwd())

# 改变当前脚本工作目录,相当于shell下的cd
# print(os.chdir("dirname"))

# 返回当前目录
print(os.curdir)
# 返回当前目录的父目录字符串名
print(os.pardir)

# 生成多层递归目录
os.makedirs('dir1/dir2')
# 若指定目录为空,则删除并递归到上一级目录;如果也为空也进行删除,以此类推
os.removedirs('dirname')

# 创建一个新目录
os.mkdir('dirname')
# 删除空目录,若指定目录不为空就报错
os.rmdir('dirname')
# 删除一个文件
os.remove()

# 列举出指定目录下的所有文件和子目录,包括隐藏文件,并以列表的方式打印
print(os.listdir('dirname'))

# 遍历所有目录,包括子目录
os.walk('dirname')

# 重命名文件/目录
os.rename('old','new')
# 获取文件/目录信息
os.stat('path/filename')

在这里插入图片描述

# 查看系统特定的路径分隔符
print(os.sep)
# 查看字符串指示当前使用平台
print(os.name)
# 查看平台使用的行终止符
print(os.linesep)
# 查看当前用于分割路径的字符串
print(os.pathsep)
# 执行shell命令 可以保存执行结果
print(os.system("shell"))
# 运行shell命令 可以保存执行结果
print(os.popen("shell").read())
# 获取系统环境变量
print(os.environ)

在这里插入图片描述

# 返回path规范化的绝对路径
print(os.path.abspath('filename/dirname'))
# 将path分割成目录和文件名按照元组返回
print(os.path.split("filename"))
# 返回path的目录,即os.path.split(path)的第一个元素
print(os.path.dirname("dirname"))
# 返回path最后的文件名,若path以/或者是\结尾会返回空值
print(os.path.basename("filename"))
# 如果path存在就返回True,如果path不存在就返回False
print(os.path.exists(''))
# 如果path是绝对路径,就返回True
print(os.path.isabs(""))
# 如果path是一个存在的文件就返回True,否则返回False
print(os.path.isdir("filename"))
# 如果path是一个存在的目录,就返回True,否则就返回False
print(os.path.isdir('dirname'))
# 将多个路径组合后返回,第一个路径之前的参数将会被忽略
print(os.path.join(''))
# 返回path所指向的文件或者是目录的最后存取时间
print(os.path.getatime('filename'))
# 返回path所指向的文件或者目录的最后修改时间
print(os.path.getmtime('filename'))

sys模块

python中的sys模块提供给访问解释器使用或维护的变量,和与解释器进行交互的函数。sys模块负责与python解释器的交互,提供了一系列的函数的和变量,用于操控python运行时的环境,sys模块也是python中默认的集成模块,被集成在解释器中。

import  sys
# 获取数据内存
print(sys.getsizeof(10))
print(sys.getsizeof(True))
print(sys.getsizeof(False))

# 获取命令行参数列表,第一个参数时程序本身的路径
print(sys.argv)

# 退出程序,正常退出时exit(0)
# print(sys.exit(0))

# 获取python解释器程序的版本信息
print(sys.version)

# 返回模块的搜索路径,初始化时使用python path环境变量的值
print(sys.platform)

# 遍历当前python文件的路径
print(sys.path[0])
print(sys.path[1])
print(sys.path[2])
print(sys.path[3])

# 输入相关
print(sys.stdin)
# 输出相关
print(sys.stdout)
# 错误相关
print(sys.stderr)

在这里插入图片描述

使用sys模块中的标准输出实现进度条:

print('-----------进度条------------')
# 使用标准输入和输出实现动态进度条
import sys
import  time
def view_bar(num1,num2):
    rate=num1/num2
    rate_num=int(rate*100)
    r='\r%s%d%%' % (">"*num1,rate_num)
    sys.stdout.write(r)
    sys.stdout.flush()
if __name__=='__main__':
    for i in range(0,101):
        time.sleep(0.1)
        view_bar(i,100)

在这里插入图片描述

time模块

在这里插入图片描述

# time 提供与时间相关的各种函数
import  time
print(time.time()) #输出当前的秒数
print(time.localtime(time.time())) #将输出的秒数转换为当前具体的时间

在这里插入图片描述
比如当我们利用os模块中的getmtime()函数返回修改某个文件过目录的时间时,我们就可以将返回的秒数格式化成年-月-日 时:分:秒的形式:

# 格式化时间
import  time
seconds=os.path.getmtime('index_1')
timeArray=time.localtime(seconds)
Styletime=time.strftime("%y-%m-%d %H:%M:%S",timeArray)
print(Styletime)
# 23-02-25 18:55:06

我们也可以安装第三方模块,比如:可以安装第三方模块schedule,导入time模块,实现定时输出功能:
在这里插入图片描述

#安装第三方模块schedule,导入time模块,实现定时输出功能
import schedule
import time
def work():
    print('-------我被执行------')
# 指定每三秒执行一次
schedule.every(3).seconds.do(work)
# 每隔三秒,休眠一秒钟
while True:
    schedule.run_pending()
    time.sleep(1)

在这里插入图片描述

random模块

random模块实现了一个伪随机数生成器,可以用来生成随机数以完成与随机数相关的功能。

import random
# 生成一个1——100的随机整数,包括1和100
print(random.randint(1,100))
# 55

# seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。
random.seed(10)
print('使用整数10种子生成随机数',random.random())
# 使用整数10种子生成随机数 0.5714025946899135

# 随机打乱列表元素排列
lis1=[1,2,3,4,5,6,7]
random.shuffle(lis1)
print(lis1)
# [3, 2, 6, 1, 5, 7, 4]

# 生成1--100之间的浮点数
print(random.uniform(1,100))
# 81.51880388437468

# 生成1——100之间的整数但是不包括10
print(random.randrange(1,100))
# 36

# 通过使用random.randint()函数,随机生成整数,字符,大小写等.
print(random.randint(1,100))
print(chr(random.randint(65,90))) #随机生成A——Z
print(chr(random.randint(48,57)))#随机生成0-9
print(chr(random.randint(97,122)))#随机生成a-z

# 从列表中随机弹出一个数据
string=['hello','world','你好世界']
print(random.choice(string))
# 你好世界

利用random模块生成验证码;

# 使用random函数生成验证码
lis2=[]
for i in range(5):
    j = random.randint(0,5)
    if j ==2 or i==4:
        num=random.randrange(0,5)
        lis2.append(str(num))
    else:
        temp=random.randrange(65,90)
        num2=chr(temp)
        lis2.append(num2)
result=''.join(lis2)
print(result)
#KHLN4

urllib包

Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理。

注意,urllib是一个包,当我们导入这个包时系统会自动创建一个__init__.py的python文件,urllib这个包中含有__init__.py文件,并且包含一些内置模块。

urllib.request 定义了一些打开 URL 的函数和类,包含授权验证、重定向、浏览器 cookies等。

urllib.request 可以模拟浏览器的一个请求发起过程。我们引入urllib包中的request模块中的urlopen方法,可以让它返回所查询到的数据,它的语法为:

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

url:url 地址。 data:发送到服务器的其他数据对象,默认为 None。 timeout:设置访问超时时间。
cafile 和capath:cafile 为 CA 证书, capath 为 CA 证书的路径,使用 HTTPS 需要用到。
cadefault:已经被弃用。 context:ssl.SSLContext类型,用来指定 SSL 设置。

如下,我们利用这个方法去读取百度服务器的返回数据:

read() 是读取整个网页内容,我们可以指定读取的长度:

# urllib 用于读取来自网上(服务器)的数据标准库
import urllib.request
print(urllib.request.urlopen('http://www.baidu.com').read(500))

我们使用 urlopen 打开一个 URL,然后使用 read() 函数获取网页的 HTML 实体代码。
在这里插入图片描述
除此之外,我们还可以使用:

readline() - 读取文件的一行内容
readlines() - 读取文件的全部内容,它会把读取的内容赋值给一个列表变量。

当我们在对网页进行抓取时,经常需要判断网页是否可以正常访问,这时就可以使用 getcode() 函数获取网页状态码,返回 200 说明网页正常,返回 404 说明网页不存在:

import urllib.request

myURL1 = urllib.request.urlopen("https://www.baidu.com/")
print(myURL1.getcode())   # 200

try:
    myURL2 = urllib.request.urlopen("https://www.baidu.com/no.html")
except urllib.error.HTTPError as e:
    if e.code == 404:
        print(404)   # 404

每篇一语

最值得欣赏的风景,事自己前进的足迹!
如有不足,感谢指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1019594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Leetcode热题】打卡day1——10

目录 1、两数之和 - 哈希表 1、两数之和 - 哈希表 1. 两数之和 思路: 建立map,mp[nums[i]]i 存储值所对应的下标 顺序遍历每一个元素,先查找mp中是否存在与nums[i]匹配的值(target-nums[i]) 如果存在,则返…

如何使用Vcluster实现Kubernetes中的多租户

Kubernetes彻底改变了组织部署和管理容器化应用程序的方式,使跨集群编排和扩展应用程序变得更加容易。然而,在共享的Kubernetes集群上运行多个异构工作负载会带来资源争用、安全风险、缺乏定制和复杂管理等挑战。 以下几种方法可以在Kubernetes中实现隔离…

《golang设计模式》第二部分·结构型模式-05-门面模式Facade)

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.2 类图 1. 概述 门面(Facade)向客户端提供使用子系统的统一接口,用于简化客户端使用子系统的操作。 1.1 角色 门面角色(Facade) 客户端可以调用的接…

数字孪生和元宇宙:打造未来的数字边界

数字孪生和元宇宙是近两年来被热议的两个概念,但由于技术的交叉两者也极易被混淆。本文希望带大家深入探讨一下这两者之间的关系,以及它们如何一起构建了数字时代的新格局。 1. 数字孪生的本质 数字孪生是一种虚拟模型,它通过数字手段对现实…

在微信公众号怎么实现投票活动

微信公众号实现投票活动的方法和步骤 一、投票活动的优势 通过投票活动,微信公众号可以实现用户参与、增加互动、了解用户需求等功能,同时也可以提升品牌知名度和用户粘性。以下是一些投票活动的优势: 增加用户参与度:通过投票活…

Seata四种事务模式AT、TCC、SAGA 、 XA详解

文章目录 一、 GlobalTransactional一、AT模式1、原理2 、优缺点3、实现 二、TCC模式1、原理2 、优缺点3、实现 三、SAGA模式1 、原理2 、优缺点3 、实现 四、XA模式1 、原理2 、优缺点3、 实现 五、 四种模式对比 我们知道Seata是一款开源的分布式事务解决方案,致力…

【LeetCode75】第五十八题 组合总和Ⅲ

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目让我们找出长度为k并且总和为n的所有组合,我们能用的元素只有1~9。 那么这种要求排列组合的题,基本是是离不…

2023客服管理者面临的挑战

客服管理者在当今的数字化时代也面临着许多挑战。以下是一些主要的挑战: 同行业竞争加剧:客服行业面临着来自同行业的竞争压力。为了获得竞争优势,企业需要不断提高自身的产品和服务质量,同时还需要不断降低成本、提高效率。然而…

go调用so库

来源:微信公众号「编程学习基地」 文章目录 go调用so库生成so库调用so库 go调用so库 生成so库 load_so.h #ifndef _LOAD_SO_H #define _LOAD_SO_Hint do_test_so_func(int a,int b);#endif load_so.c #include "load_so.h"int do_test_so_func(int …

数据结构——四叉树

四叉树(Quadtree)是一种用于表示和管理二维空间的树状数据结构。它将二维空间递归地分割成四个象限,每个象限可以继续分割,以实现对空间的更精细的划分。四叉树通常用于解决空间搜索和查询问题,例如碰撞检测、图像压缩…

vector使用和模拟实现

💓博主个人主页:不是笨小孩👀 ⏩专栏分类:数据结构与算法👀 C👀 刷题专栏👀 C语言👀 🚚代码仓库:笨小孩的代码库👀 ⏩社区:不是笨小孩👀 🌹欢迎大…

2.6W字系统总结,带你实现 Linux 自由!

以前就聊过大多数应届生入职后会遇到的两大拦路虎分别是Git和Linux,其中关于Git,前段时间已经分享过自己工作两年多以来用过的比较实用的一些命令了,这些命令可能不是最花哨的,但绝对是最实用的。 今天分享一份很全面的Linux常用…

springboot+canal+mysql+redis缓存双写一致性

canal官网地址:https://github.com/alibaba/canal/wiki/QuickStart 基本上按照官网的步骤来就行 准备 首先服务器上要安装好jdk,因为canal运行需要jdk,同时把canal对应的端口在服务中开放,否则连接不上 对于自建 MySQL , 需要先开启 Binl…

linux安装python3.x版本

linux安装python3.x版本 ① 安装依赖环境② 下载python版本包③ 安装python④ 建立软链接⑤ 加入path⑥ 验证 官网版本地址:https://www.python.org/ftp/python/ ① 安装依赖环境 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel…

Vue 使用vue-pdf 显示pdf文件 切换页面 缩放 全屏 自动播放等

<template><div id"container"><!-- 上一页、下一页--><div class"right-btn"><div click"toFullOrExit" class"turn-btn"><span>{{ isFull 1 ? "取消全屏" : "全屏" }}&l…

GLTF-pipeline

gltf-pipeline可用作命令行工具或 Node.js 模块。 开始 安装 Node.js如果还没有&#xff0c;然后&#xff1a; npm install -g gltf-pipeline使用 gltf-pipeline 作为命令行工具&#xff1a; 将 glTF 转换为 glb gltf-pipeline -i model.gltf -o model.glb gltf-pipeline…

python萌新爬虫学习笔记【建议收藏】

文章目录 1. 如何何请求解析url2. 如何获取标签里面的文本3. 如何解析JSON格式4. 如何添加常用的header5. 如何合并两个div6. 如何删除html dom的部分结构7. 如何一次性获取所有div标签里的文本8. python爬虫如何改变响应文本字符集编码9. 如何进行字符集转码11. response.text…

骨髓小游戏

欢迎来到程序小院 骨髓 玩法&#xff1a; 骨髓推塔小游戏&#xff0c;敌方士兵进入到我方高塔会毁坏建筑&#xff0c;我方可派兵前去迎战&#xff0c;我方&#xff1a;骑兵、长枪兵、弓兵、敌法&#xff1a;骷髅骑兵、骷髅长枪兵、 骷髅弓兵,快去消灭敌人吧^^。开始游戏https:…

利用爬虫技术自动化采集汽车之家的车型参数数据

导语 汽车之家是一个专业的汽车网站&#xff0c;提供了丰富的汽车信息&#xff0c;包括车型参数、图片、视频、评测、报价等。如果我们想要获取这些信息&#xff0c;我们可以通过浏览器手动访问网站&#xff0c;或者利用爬虫技术自动化采集数据。本文将介绍如何使用Python编写…

flutter开发实战-长按TextField输入框cut、copy设置为中文复制、粘贴

flutter开发实战-长按TextField输入框cut、copy设置为中文复制、粘贴 在开发过程中&#xff0c;需要长按TextField输入框cut、copy设置为中文“复制、粘贴”&#xff0c;这里记录一下设置的代码。 一、pubspec.yaml设置flutter_localizations 在pubspec.yaml中设置flutter_l…