常见模块(一)

1.模块介绍

就是一堆代码实现了某个功能的代码集合。

类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中)  。 python 是函数式编程。模块由一个.py文件或多个.py模块组成。

模块分为三种:

1).自定义模块

2).内置标准模块或称标准库

3.)开源模块  https://pypi.python.org/pypi

对于下面的问题需要完善和解释

2.自定义模块

根据需求编写py文件后形成可复用的内容,可作为模块加载使用。

自定义模块导入方法:

import module

from module.xx.xx import yy   其中xx代表子模块的名称,若模块就一级模块级module则不需要后面内容,yy则是需要调用的模块

from module.xx.xx import yy as rename    给导入的模块定义别名

from module.xx.xx import *  导入模块下所有  不推荐 ,因为默认情况不知道有哪些模块,可能会把自己的功能冲突,导致功能模块不可用。

导入模块其实就是告诉Python解释器去解释那个py文件

  • 导入一个py文件,解释器解释该py文件
  • 导入一个包,解释器解释该包下的 __init__.py 文件

关于导入模块的默认路径:

由于在python安装后内置一些模块,而这些模块会在python制定的目录下,加入需要将开源模块和自定义模块使系统能自动识别,需要把自定义模块路径和开源模块路径加入到默认路径中,具体查找默认路径及修改默认路径方法如下:

获取默认路径:

import sys

print (sys.path)

输出结果如下:

  1. [‘E:\\Python\\S‘, ‘E:\\Python\\‘, ‘C:\\Windows\\system32\\python34.zip‘, ‘C:\\Python34\\DLLs‘, ‘C:\\Python34\\lib‘, ‘C:\\Python34‘, ‘C:\\Python34\\lib\\site-packages‘, ‘C:\\Python34\\lib\\site-packages\\win32‘, ‘C:\\Python34\\lib\\site-packages\\win32\\lib‘, ‘C:\\Python34\\lib\\site-packages\\Pythonwin‘]

在默认路径中是没有你自定义模块和开源模块路径(在安装过程中直接安装到次路径下除外)

具体操作方法如下:

  1. #!/usr/bin/env python
  2. # -*-coding:utf-8 -*-
  3. import sys,os 导入sys os模块
  4. print(‘sys‘,__file__) 获取文件的相对路径
  5. dir_base = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #获取文件的根目录
  6. #os.path.abspath(__file___)获取文件的绝对路径
  7. #os.path.dirname 获取文件的绝对路径目录,实际是将/符号前的内容进行删除操作,每执行一次,进行一次删除操作。
  8. print(‘dir_base‘,dir_base)
  9. sys.path.append(dir_base) #sys.path为系统默认变量,将刚刚的变量加入进临时变量
  10. print(sys.path)
  11. print(sys.path) 获取系统环境变量,默认为列表
  12. 默认执行错误的原因是由于文件默认是找不到最根目录,而user_name能执行的原因,因为他就在根目录。

3.开源模块
Python 官方网站提供了一些被认证的开源模块可供下载,地址为:https://pypi.python.org/pypi 
可以使用pip命令进行下载安装,也可手动下载后执行安装操作。

4.常用内置模块

4.1 .time & datetime模块

time 常用功能

print(time.clock()) #返回处理器时间,3.3开始已废弃       用的比较少

print(time.process_time()) #返回处理器时间,3.3开始已废弃

print(time.time()) #返回当前系统时间戳                               从1970开始,到现在的时间(这个是系统默认的,UNIX系统应该是1970年发布的。)  主要用来判断时间差

print(time.ctime()) #输出Tue Jan 26 18:23:48 2016 ,当前系统时间

print(time.ctime(time.time()-86400)) #将时间戳转为字符串格式   (后面数字的单位为秒,一天为86400秒)

print(time.gmtime(time.time()-86400)) #将时间戳转换成struct_time格式  这个测试下,重要

执行结果:

>>> time.gmtime()

time.struct_time(tm_year=2016, tm_mon=1, tm_mday=30, tm_hour=10, tm_min=22, tm_s

ec=54, tm_wday=5, tm_yday=30, tm_isdst=0)

print(time.localtime(time.time()-86400)) #将时间戳转换成struct_time格式,但返回 的本地时间  和gmtime的时间区别是,gmtime返回的是格林威治时间,与localtime相差8个小时。

print(time.mktime(time.localtime())) #与time.localtime()功能相反,将struct_time格式转回成时间戳格式

#time.sleep(4) #sleep

print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将struct_time格式转成指定的字符串格式

输出结果:2016-02-19 02:33:36

print(time.strptime("2016-01-28","%Y-%m-%d") ) #将字符串格式转换成struct_time格式

与上面正好相反的

不能直接把字符串转换成时间戳,把字符串转成时间戳,需要将字符串转换成struct_time,然后在将struct_time转换成时间戳

datatime 模块

print(datetime.date.today()) #输出格式 2016-01-26

print(datetime.date.fromtimestamp(time.time()-864400) ) #2016-01-16 将时间戳转成日期格式

current_time = datetime.datetime.now() #

print(current_time) #输出2016-01-26 19:04:30.335935

print(current_time.timetuple()) #返回struct_time格式

#datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])

print(current_time.replace(2014,9,12)) #输出2014-09-12 19:06:24.074900,返回当前时间,但指定的值将被替换

str_to_date = datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M") #将字符串转换成日期格式

new_date = datetime.datetime.now() + datetime.timedelta(days=10) #比现在加10天

new_date = datetime.datetime.now() + datetime.timedelta(days=-10) #比现在减10天

new_date = datetime.datetime.now() + datetime.timedelta(hours=-10) #比现在减10小时

new_date = datetime.datetime.now() + datetime.timedelta(seconds=120) #比现在+120s

print(new_date)

4.2.random模块 随机数

import random

print random.random() 产生随机数

print random.randint(1,2)  在这个范围内产生随机数

print random.randrange(1,10)

dir(random) 查看方法

例子:生成验证码:

  1. import random
  2. for i in range(6): #6代表随机码的位数,因为每循环一次会随机生产一次,然后进行叠加到checkcode中。
  3. corrent = random.randrange(0,4)
  4. if corrent != i:
  5. tmp = str(chr(random.randrange(65,90))) #chr 是转换成ASCII码, 默认65-90为A-Z 使用str转换成字符串
  6. else:
  7. tmp = str(random.randrange(0,9)) #
  8. checkcode += tmp
  9. print(checkcode)

执行结果:

  1. C:\Python34\python.exe E:/Python/随机数.py
  2. SQVUHO

4.3.序列化

序列化和反序列化

传输或对外提供都是字符串和ASIC码, 列表、字典、元组是内存中的格式。

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load pickle模块提供了四个功能:dumps、dump、loads、load import pickle data = {‘k1‘:123,‘k2‘,‘123‘} p_str = pickle.dumps(data) print p_str pickle.dumps 将数据通过特殊的形式转换为只有python语言能识别的字符串。 with open(‘e:/test.txt‘,‘w‘) as ft: pikcle.dump (data,fp) pikcle.dump 将数据通过特殊的形式转换为只有python语言能识别的字符串。并写入文件。 json.dumps  将数据通过特殊的形式转换为所有程序语言都能认识的字符串 json.dump  将数据通过特殊的形式转换为所有程序语言都能认识的字符串,并写入文件。 load、loads 和dump、 dumps功能正好相反。 pikcle 和 json 的区别在于,pikcle能对python环境下任何格式文件存储到文件中,通过load/loads进行还原后仍是原有的格式。而json则只能对字符串等常见格式进行格式化存储,因此假若程序旨在python环境下运行,使用pikcle最为合适,若需要与其他程序进行互通,则需要使用json,保障其他语言能读取。 经测试,json不支持str格式





来自为知笔记(Wiz)

时间: 2024-11-05 19:50:15

常见模块(一)的相关文章

LH01_ansible及其常见模块01

ansible及其常见模块01 目录: 1)ansible的特性 2)ansible安装 3)ansible配置添加管理主机 4)配置基于ssh密钥管理 5)如何查看模块帮助 6)ansible命令应用基础 7)ansible常见模块 Ansible核心组件: ansible core host iventory Core Moduies Custom Modules Playbooks(yaml,jinjia2) Connection Plugins 1)ansible的特性: 基于Pytho

ansible及其常见模块

什么是Ansible ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. Ansible特性 基于Python语言实现,由Paramiko, PyYAML和Jinjia2三个关键模块: ansible是工作在agentless模式下具有幂等性.ansible在控制端只需要告诉监控端的期望状态就可以实现批量部署. 默认使用SSH协议: (1) 基于密钥认证: (2) 在inventory文件中指定账号和密

L13 ansible 基础应用与常见模块

ansible 基础应用与常见模块 ansible中文手册:http://www.simlinux.com/books/Ansible-notes.pdf 1,运维工具简介 运维工具: 系统安装(物理机.虚拟机)--> 程序安装.配置.服务启动 --> 批量操作(批量运行命令) --> 程序发布 --> 监控 ansible 能够实现:程序安装.配置.服务启动 --> 批量操作(批量运行命令) --> 程序发布 ansible的核心组件: ansible core ho

常见模块和包

1什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.py文件) 2 已被编译为共享库或DLL的C或C++扩展 3 包好一组模块的包 4 使用C编写并链接到python解释器的内置模块 2 为什么要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过pyt

Saltstack常见模块案例分析

简介:SaltStack 是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的puppet和加强版的func.SaltStack 基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq.PyCrypto.Pyjinjia2. python-msgpack和PyYAML等)构建. 通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理.分发文件.采集服务器数

常见模块(二)

1.OS模块 提供对操作系统进行调用的接口 1.1. os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 >>> os.getcwd() 'C:\\Users\\soft' 1.2. os.chdir("dirname")  改变当前脚本工作目录:相当于shell下cd >>> os.chdir("c:/") >>> os.getcwd() 'c:\\' 和os.system(&quo

part10-1 Python常见模块(sys模块、os模块)

Python 有强大的第三方模块,这些第三方模块在实际运用中已经能实现很多的功能,通常不需要重复开发具有相同功能的模块.另外,Python 语言也内置了大量的模块,这些模块已经非常完善,例如对于常见的日期.时间.正则表达式.JSON支持.容器类等都有完善的模块.接下来学习 Python 内置的模块,不过这些模块还在不断的更新中,更详细的模块帮助可查看 Python 库的在线参考手册,https://docs.python.org/3/library/index.html. 一. sys 模块 s

Python学习(十二)—— 常见模块

常见内置模块 time模块 时间戳(单位是秒,代表由1970年元旦凌晨至今过去的时间),常用于计算 .time(): 1 import time 2 #时间戳,单位是s 3 print(time.time()) 4 # 1583246063.46606 结构化时间 (显示当地当前的精确时间 年月日...).localtime() 1 print(time.localtime()) 2 # time.struct_time(tm_year=2020, tm_mon=3, tm_mday=3, tm

pam之基础知识和常见模块

nns负责名称解析,认证的过程是pam来处理.2套系统是独立运行的. 认证本身也可以不借用nss,自己去找对应的解析库. 以用户登陆为例:    用户名的解析 :        USERNAME--> nsswitch.conf --> passwd : file--> /etc/passwd 密码的解析:        PASSWORD --> nsswitch.conf --> shadow : file --> /etc/shadow 认证:        USE