IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python---模块补充 -> 正文阅读

[Python知识库]Python---模块补充

练习: 文件生成器

# 需求:通过生成器完成以下功能
#
# 使用函数实现生成器   (yield)   def file_gen
# 函数接受一个文件对象作为参数
# 生成器函数每次返回文件的 10 行数据
def file_gen(f):  # fr = open("/etc/passwd",mode="r")
    lines = [] #每次存储10行
    for hang in f.readlines(): # # 从文件对象中,一行一行读取记录
        lines.append(hang)  # 将读取的行记录,存储在列表lines中
        if len(lines) == 10: # 当读取10行记录时
            yield lines  # 暂停运行函数,给函数返回列表lines
            lines.clear()  # 清空lines
    if len(lines) != 0: # # 最后一次够不够10行都要返回
        yield lines 

if __name__ == '__main__':
    fr = open("/etc/passwd",mode="r")
    gen = file_gen(fr)
    for item in gen:
        print("item",item)
    fr.close()

?

模块详解

模块

基本概念

  • 模块支持从逻辑上组织 python 代码
  • 当代码量变得非常大的时候,最好把代码分成一些有组织的代码段
  • 代码片段相互间有一定的联系,可能是一个包含数据成员和方法的类,也可能是一组相关但彼此独立的操作函数
  • 这些代码段是共享的,所有 python 允许 “调入” 一个模块,允许使用其他模块的属性来利用之前的工作成果,实现代码重用

作用

  • 模块可以实现代码的重用,导入模块,就可以使用模块中已经定义好的类,函数和变量,减少代码的冗余性

模块文件

  • 模块是从逻辑来组织 python 代码的方法,文件是物理层上组织模块的方法
  • 一个文件被看作是一个独立模块,一个模块也可以被看作是一个文件
  • 模块的文件名就是模块的名字加上扩展名?.py

搜索路径

  • 模块的导入需要一个叫做 “路径搜索” 的过程
  • python 在文件系统 “预定义区域” 中查找要调用的模块
  • 搜索路径在 sys.path 中定义
  • 也可以通过 PYTHONPATH 环境变量引入自定义目录

导入模块

查看模块的默认搜索路径

>>> import sys		#导入模块sys
>>> sys.path		#path, 查看python搜索模块时的默认查找路径

模块导入方法

  • 使用import导入模块
  • 可以在一行导入多个模块,但是可读性会下降
  • 可以只导入模块的某些属性
  • 导入模块时,可以为模块取别名
>>> import time, os, sys
>>> from random import choice
>>> import pickle as p
  • 当导入模块时,模块的顶层代码会被执行
  • 一个模块不管被导入(import)多少次,只会被加载(load)一次
[root@py01 ~]# cat foo.py
hi = 'hello'
print(hi)
[root@py01 ~]# python3
>>> import foo
Hello                        #第一次导入,执行print语句
>>> import foo       #再次导入,print语句不再执行

import hahaha
hahaha.myfunc()
# 修改环境变量 PYTHONPATH 这种方式在终端运行代码
# export PYTHONPATH=/opt/mydir





[root@localhost nsd2112]# cd day09
[root@localhost day09]# export PYTHONPATH=/opt/mydir
[root@localhost day09]# python3 demo01.py 
myfunc

?

?

内置模块

hashlib 模块

  • hashlib 用来替换 MD5 和 sha 模块,并使他们的API一致,专门提供hash算法
  • 包括md5、sha1、sha224、sha256、sha384、sha512,使用非常简单、方便
import hashlib
dc = hashlib.md5(b"123456") # 计算 b'123456'的md5值
print(dc.hexdigest())  # 以16进制的方式,显示md5值

# 重新创建
dc1 = hashlib.md5()
dc1.update(b"12")
dc1.update(b"34")
dc1.update(b"56")
print(dc1.hexdigest())

?

练习 5:计算文件 md5 值

需求

  • 编写用于计算文件 md5 值的脚本
  • 文件名通过位置参数获得
  • 打印出文件 md5 值

?

# 编写用于计算文件 md5 值的脚本
# 文件名通过位置参数获得
# 打印出文件 md5 值
import hashlib
def cal_md5(fname):  # fname = "/etc/passwd"
    dc = hashlib.md5()
    fr = open(fname, mode="rb")
    while True:
        data = fr.read(4096)  # 4k
        if len(data) == 0:
            break
        else:
            dc.update(data)  # 更新data的md5值
    fr.close()
    return dc.hexdigest()
if __name__ == '__main__':
    md5 = cal_md5("/etc/passwd")  # fname = "/etc/passwd"
    print(md5)
    # 8d05aa71d5b163122d51a69fed0fa9a7
    # 8d05aa71d5b163122d51a69fed0fa9a7



tarfile 模块

  • tarfile模块允许创建、访问 tar 文件
  • 同时支持 gzip、bzip2 格式
>>> import tarfile		#在local下, 导入模块tarfile【实现文件的打包和解压】
>>> tar = tarfile.open('/tmp/demo.tar.gz', 'w:gz')		#以'w:gz'的格式,打开包文件,文件不存在则会自动创建
>>> tar.add('/etc/hosts')			#向包文件中压缩文件/etc/hosts
>>> tar.add('/etc/security')		#向包文件中压缩目录/etc/security
>>> tar.close()					#关闭文件
[root@localhost day02]# ls -l /tmp/demo.tar.gz 

>>> tar = tarfile.open('/tmp/demo.tar.gz')	#打开文件,文件已经存在,则不需要指定类型,python会自动选择
>>> tar.extractall(path='/var/tmp')		#解压到 /var/tmp目录下,不指定解压到当前目录
>>> tar.close()						#关闭文件
[root@localhost day02]# ls /var/tmp/etc/		#查看软件包demo.tar.gz是否解压成功

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:39:24  更:2022-04-07 22:40:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:19:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码