我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python 常用模块学习

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python 常用模块学习

Python中的模块是可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块。Python允许“导入”其他模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统。Python中,模块也是对象。在一个模块的顶层定义的所有变量都在被导入时成为了被导入模块的属性。

1、python程序架构
一个Python程序通常包括一个顶层程序文件和若干个模块文件。顶层文件包含了程序的主要控制流程,模块文件是为顶层文件或其他模块提供各种功能性组件,模块首次导入(或重载)时,Python会立即执行模块文件的顶层程序代码(不在函数内的代码),而位于函数主体内的代码直到函数被调用后才会执行。
2、模块的执行环境
模块是被导入的,但模块也可以导入和使用其他模块,这些模块可以用Python或其它编程语言写成
模块可内含变量、函数以及类来进行其工作,而函数和类可以包含变量和其它元素
3、导入模块
在导入模块时只能使用模块名,而不能使用带.py后缀的模块文件名

import语句:
            导入指定的整个模块,包括生成一个以模块名命名的名称空间
            import module1[,module2[,...moduleN]]
            建议一个import语句只导入一个模块
            import module as module_alias
from-import语句:
            常用于只导入指定模块的部分属性至当前名称空间
            from module import name1[,name2[,...nameN]]
          import和from-import是赋值语句
            import和from是可执行语句,类似于def,因此,它们可以嵌套在if测试中,出现于def中等等
            Python执行到这些语句时才会对其进行解析,这意味着,所有来自模块的属性仅在import语句执行后才能使用
模块就是名称空间
            模块的名称空间可以通过属性__dict__或dir(M)获取
                模块属性可通过点号(.)运算符获取,格式为M.attr
            模块是一个独立的作用域(本地变量就是全局变量)

4、import的工作机制
import语句导入指定的模块时会执行三个步骤
1、找到模块文件
在指定的路径下(sys.path)搜索模块文件
2、编译成字节码
文件导入时就会编译,因此,顶层文件的.pyc字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件
3、执行模块的代码来创建其所定义的对象
模块文件中的所有语句会依次执行,从头到尾,而此步骤中任何对变量名的赋值运算,都会产生所得到的模块文件的属性
注意:模块只在第一次导入时才会执行如上步骤,后续的导入操作只不过是提取内存中已加载的模块对象,reload()可用于重新加载模块

time模块用来操作时间值
时间戳:time.time()
格式化时间:字符串表示,time.strftime('%Y-%m-%d')
结构化时间:元组表示,time.localtime(), time.gmtime()

asctime:返回时间格式Sun Mar 18 10:51:28 2018
In [1]: import time
In [2]: time.asctime()
Out[2]: 'Sun Mar 18 10:51:28 2018'
In [3]: time.asctime(time.localtime())
Out[3]: 'Sun Mar 18 10:51:45 2018'
ctime:将自纪元以来的时间以秒为单位转换为本地时间的字符串,相当于time.asctime(time.localtime())
In [4]: time.ctime()
Out[4]: 'Sun Mar 18 10:55:26 2018'
gmtime:当前UTC时间
In [7]: time.gmtime()
Out[7]: time.struct_time(tm_year=2018, tm_mon=3, tm_mday=18, tm_hour=2, tm_min=58, tm_sec=1, tm_wday=6, tm_yday=77, tm_isdst=0)
localtime:返回本地时间
In [9]: time.localtime()
Out[9]: time.struct_time(tm_year=2018, tm_mon=3, tm_mday=18, tm_hour=11, tm_min=3, tm_sec=56, tm_wday=6, tm_yday=77, tm_isdst=0)
strptime:将传入的时间转换为str格式的时间
In [11]: time.strptime('2018-3-18', '%Y-%m-%d')
Out[11]: time.struct_time(tm_year=2018, tm_mon=3, tm_mday=18, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=77, tm_isdst=-1)
strftime:将struct格式时间转换为指定格式的时间
In [13]: time.strftime('%Y-%m-%d')
Out[13]: '2018-03-18'
In [14]: time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())
Out[14]: '2018-03-18 03:09:47'
mktime:将struct时间转换为时间戳
In [15]: time.mktime(time.strptime('2018-3-18', '%Y-%m-%d'))
Out[15]: 1521302400.0
sleep:睡眠时间
In [16]: time.sleep(5)

Python 常用模块学习

datetime模块用来操作时间
datetime.date:表示日期的类。常用的属性有year, month, day
datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond
datetime.datetime:表示日期时间
datetime.timedelta:表示时间间隔,即两个时间点之间的长度
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
strftime("%Y-%m-%d")

>>> import datetime                         
>>> import time
#当前时间
>>> print(datetime.datetime.now())
2018-03-18 12:10:27.199643
#格式化时间戳
>>> print(datetime.date.fromtimestamp(time.time()))
2018-03-18
#当前时间➕3天
>>> print(datetime.datetime.now() + datetime.timedelta(3))
2018-03-21 12:10:52.869598
#当前时间➖3天
>>> print(datetime.datetime.now() + datetime.timedelta(-3))
2018-03-15 12:11:04.721491
#当前时间➕3小时
>>> print(datetime.datetime.now() + datetime.timedelta(hours=3))
2018-03-18 15:11:18.628036
#当前时间➖4小时
>>> print(datetime.datetime.now() + datetime.timedelta(hours=-4))
2018-03-18 08:11:42.096182
#当前时间➕120分钟
>>> print(datetime.datetime.now() + datetime.timedelta(minutes=120))
2018-03-18 14:11:53.305800

随机数

In [1]: import random
In [2]: random.random()
Out[2]: 0.9381887159573181
#随机返回1到10之间的整数
In [3]: random.randint(1,10)
Out[3]: 8
#从1到10中,2为步长随机返回一个数
In [4]: random.randrange(1,10,2)
Out[4]: 5
#随机返回序列中的元素
In [5]: random.choice([1,2,3,4])
Out[5]: 3
#打乱序列中的元素顺序
In [10]: l1 = [1,2,3,4]
In [11]: random.shuffle(l1)
In [12]: l1
Out[12]: [1, 2, 4, 3]
#随机返回序列中的2个元素
In [13]: random.sample(l1,2)
Out[13]: [2, 4]

例:生成验证码

import random

def rand_num():
    code = ''
    for i in range(8):
        add = random.choice([random.randrange(10),chr(random.randrange(65,91))])
        code += str(add)
    print(code)

rand_num()

os模块是两大核心系统模块中较大的那个,它包含了在C程序和shell脚本中经常用到的所有操作系统调用。os模块可以轻松实现不依赖于平台的操作系统调用,用os和os.path编写的脚本通常无需改动即可在其他平台上运行。
1、管理工具

In [3]: import os
getpid:给出调用函数的进程的ID
In [4]: os.getpid()
Out[4]: 2017
getcwd:返回当前工作目录
In [5]: os.getcwd()
Out[5]: '/home/ops-jym'
chdir:改变程序运行目录
In [6]: os.chdir(r'/home')
In [7]: os.getcwd()
Out[7]: '/home'
pathsep:输出用于分割文件路径的字符串
In [8]: os.pathsep
Out[8]: ':'
sep:输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
In [9]: os.sep
Out[9]: '/'
linesep:输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
In [10]: os.linesep
Out[10]: '\n'
pardir:获取当前目录的父目录字符串名
In [11]: os.pardir
Out[11]: '..'
curdir:返回当前目录
In [12]: os.curdir
Out[12]: '.'

2、os.path

isdir:检查给出的文件是否是目录
In [13]: os.path.isdir(r'/home/ops-jym'),os.path.isdir(r'/etc/issue')
Out[13]: (True, False)
isfile:检查给出的文件是否是文件
In [14]: os.path.isfile(r'/home/ops-jym'),os.path.isfile(r'/etc/issue'
    ...: )
Out[14]: (False, True)
exists:检查文件是否存在
In [16]: os.path.exists(r'/etc/issue'),os.path.exists(r'/etc/123')
Out[16]: (True, False)
getsize:返回给出文件的大小
In [17]: os.path.getsize(r'/etc/issue')
Out[17]: 23
split:将path分割成目录和文件名二元组返回
In [18]: os.path.split(r'/home/ops-jym')
Out[18]: ('/home', 'ops-jym')
join:将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
In [19]: os.path.join(r'/home','ops-zhh')
Out[19]: '/home/ops-zhh'
splitext:剥离文件扩展名(最后一个 . 后面的内容)
In [20]: os.path.splitext(r'/home/ops-jym/shell_script/lamp.sh')
Out[20]: ('/home/ops-jym/shell_script/lamp', '.sh')
normpath:对于路径中混用了win和linux的分隔符的,使用normpath来处理
In [21]: os.path.normpath(r'C:\123\123')
Out[21]: 'C:\\123\\123'
In [22]: os.path.normpath(r'/home//ops-jym')
Out[22]: '/home/ops-jym'
abspath:返回path规范化的绝对路径
In [23]: os.path.abspath(" ")
Out[23]: '/home'
In [24]: os.path.abspath('ops-jym')
Out[24]: '/home/ops-jym'

3、运行shell命令

system:在Python脚本中运行shell命令
In [38]: os.system('ls -al')
总用量 3948560
drwxr-xr-x.  5 root    root            87 1月  19 17:29 .
dr-xr-xr-x. 18 root    root          4096 3月  19 16:33 ..
drwxr-xr-x.  2 root    root          4096 12月 22 17:19 jiayimeng
drwx------. 11 ops-jym ops-jym       4096 2月  23 10:34 ops-jym
drwx------.  5 ops-zhh ops-zhh       4096 12月 26 14:53 ops-zhh
-rw-r--r--.  1 root    root    4043309056 12月 22 17:10 rhel-server-7.2-x86_64-dvd.iso
Out[38]: 0

popen:运行shell命令并与其输入或输出流相连接(迭代器对象)
In [39]: os.popen('cat /etc/issue').read()
Out[39]: '\\S\nKernel \\r on an \\m\n\n'

上面的两个例子可以看出,system和popen都有其局限性,尽管两个函数本身有很好的可移植性,但其真正的可移植程度决定于所运行的命令,所以我们使用subprocess模块来实现system和popen的功能。

4、其他工具

os.environ:获取和设置shell环境变量
os.fork:在类UNIX系统下派生新的子进程
os.pipe:负责进程间通信
os.open:打开基于底层描述符的文件(与python内建open函数不同)
os.mkdir:创建新目录
os.mkfifo:创建新的命名管道
os.stat:获取文件底层信息
os.remove:根据路径名删除文件
os.walk:将函数或循环应用与整个目录树的各部分

更多os模块详细内容,请看这里 -->猛击这里

sys模块与os模块组成了Python系统相关工具集的核心部分。

In [41]: import sys
#获取平台版本信息
In [42]: sys.platform,sys.maxsize,sys.version
Out[42]: 
('linux',
 9223372036854775807,
 '3.6.4 (default, Dec 26 2017, 13:57:54) \n[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]')

#模块搜索路径
In [43]: sys.path
Out[43]: 
['',
 '/usr/bin',
 '/usr/local/python3/lib/python36.zip',
 '/usr/local/python3/lib/python3.6',
 '/usr/local/python3/lib/python3.6/lib-dynload',
 '/usr/local/python3/lib/python3.6/site-packages',
 '/usr/local/python3/lib/python3.6/site-packages/IPython/extensions',
 '/root/.ipython']

#利用列表操作修改模块搜索路径(append,extend,insert,pop,remove,del)
In [44]: type(sys.path)
Out[44]: list
In [45]: sys.path.append(r"/home")
In [46]: sys.path
Out[46]: 
['',
 '/usr/bin',
 '/usr/local/python3/lib/python36.zip',
 '/usr/local/python3/lib/python3.6',
 '/usr/local/python3/lib/python3.6/lib-dynload',
 '/usr/local/python3/lib/python3.6/site-packages',
 '/usr/local/python3/lib/python3.6/site-packages/IPython/extensions',
 '/root/.ipython',
 '/home']
In [47]: sys.path.remove('/home')

#查看已加载模块
In [50]: list(sys.modules.keys())

#查看对象的引用次数
In [50]: sys.getrefcount("sys")
Out[50]: 626

In [51]: sys.getrefcount("os")
Out[51]: 687

#显示为由字符串组成的列表的命令行参数
In [52]: sys.argv
Out[52]: ['/bin/ipython3']

#标准流
sys.stdin、sys.stdout、sys.stderr

#程序退出
sys.exit

更多sys模块详细内容 -->猛击这里

Python的hashlib模块提供了用于摘要的相关操作,代替了md5,sha模块。
MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。

import hashlib

hash = hashlib.md5()
hash.update(bytes('python',encoding='utf-8'))
hash.update(bytes('hashlib',encoding='utf-8'))
print(hash.hexdigest())

结果如下

377f64c42b532c45aeb9aefaab0b81c4

sha1是另一种较为常见的摘要算法,调用与md5相似,SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。

hash = hashlib.sha1()
hash.update(bytes('python',encoding='utf-8'))
hash.update(bytes('hashlib',encoding='utf-8'))
print(hash.hexdigest())

结果如下

7459c50714857e221f9b9ee36314f385b90b6c82

SHA系列的摘要算法还包括SHA1, SHA224, SHA256, SHA384, SHA512,摘要长度越长,安全性就更高,相对应的,速度也就越慢。

import hashlib

hash = hashlib.sha3_512()
hash.update(bytes('python',encoding='utf-8'))
hash.update(bytes('hashlib',encoding='utf-8'))
print(hash.hexdigest())
结果如下:
3242741c74818ee36c3fe17a1d98180554b384a1c162325343e423f74acc2da125b2dd191d2a5a3fb388a2640f426b2acf09a49576e833a4a5cf5a697ec2c787

上述的摘要算法让数据已经很安全了,不过,还是有些瑕疵,即通过撞库可以反解,我们可以在加一层保险

import hashlib

hash = hashlib.sha3_512(bytes('abcd',encoding='utf-8'))
hash.update(bytes('python',encoding='utf-8'))
hash.update(bytes('hashlib',encoding='utf-8'))
print(hash.hexdigest())
结果如下:
0287ef90ce6a8f3d4ea4be5e5cc9f229267b17250a34faf62d9ee286819e8e4aad7783a63898bf76c2ffeaf657590cfaa62e34acbaba80105572ef0f64829cda

hashlib模块的应用比较广泛,比如应用在网上提供服务,同时附上了其摘要字符串,如果有人篡改了你的应用,其摘要字符串就发生了改变,人们就能发现应用发生了改变。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python 常用模块学习

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python 常用模块学习

Python中的模块是可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块。Python允许“导入”其他模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统。Pyt
2023-01-31

Python学习 :常用模块(二)

常用模块(二)四、os模块os模块是与操作系统交互的一个接口,用于对操作系统进行调用os.getcwd() # 提供当前工作目录os.chdir() # 改变当前工作目录os.curdir() # 返回当前目录('.')os.par
2023-01-30

python模块学习----nmap模块

安装nmap模块:pip install python_nmanmap模块说明:python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理
2023-01-31

Python 模块学习

模块学习:http://wsyht90.blog.51cto.com/9014030/18457371、getpass2、os3、sys4、subprocess5、hashlib6、json7、pickle8、shutil9、time10、
2023-01-31

python模块学习

系统相关的信息模块: import syssys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象. sys.stdin
2023-01-31

Python模块学习之IPy模块

IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。Python提供了一个强大的第三
2023-01-31

python学习-psuti模块

psutil(进程和系统实用程序)是一个跨平台的库,用于 在Python中检索有关运行进程和系统利用率(CPU,内存,磁盘,网络,传感器)的信息。它主要用于系统监视,分析和限制流程资源以及运行流程的管理。它实现了UNIX命令行工具提供的许多
2023-01-31

Python pycurl模块 学习

pycurl模块的安装方法如下:easy_install pycurl #easy_install安装方法pip install pycurl #pip安装方法#源码安装方法# 要求curl-config包支持,需要源码方式重新安装curl
2023-01-31

Python学习-pycurl模块

pycurl是一个用c语言编写的libcurl Python实现,功能非常强大,支持操作协议有FTP,HTTP,HTTPS,TELNET等。模块的常用方法说明:close()方法,对应libcurl包中的curl_easy_cleanup方
2023-01-31

python学习-smtplib模块

python的stmplib模块可以实现邮件的发送功能,可以模拟一个smtp客户端。在python2.3或者更高版本默认自带smtplib模块,无需额外安装。一、smtplibi模块的常用类与方法    smtp类定义:smtplib([h
2023-01-31

python学习-re模块

Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具,下面我主要总结了re的常用方法。1.re的简介    使用python
2023-01-31

python optparse模块学习

本文参考:http://docs.python.org/2/library/optparse.htmlPython 有两个内建的模块用于处理命令行参数:一个是 getopt,getopt只能简单处理 命令行参数。另一个是 optparse,
2023-01-31

python hashlib模块学习

目录 hashlib 模块 破解密码 hmac 模块 1.干嘛用的: 对字符进行加密,其实就是一个自定义的字符编码表,我们原来接触的是计算机语言0和1然
2023-01-31

python模块学习(1)

模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。模块也是Python对象,具有随机的名字属性用来绑定或引用。简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变
2023-01-31

python学习-OS模块

OS模块是python内建模块,主要是对大量文件和大量路径进行操作os.sep:取代操作系统特定的路径分隔符os.name:指示你正在使用的工作平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
2023-01-31

Python学习—json模块

json模块四个常用方法son.dumps() 将python对象编码成为json的字符串格式(最常用的是字典,列表集合等都可以)json.dump() 将python对象编码成为json的字符串格式并写入文件json.loa
2023-01-31

Python模块学习--email

可以使用Python的email模块来实现带有附件的邮件的发送。SMTP (Simple Mail Transfer Protocol)  邮件传送代理 (Mail Transfer Agent,MTA) 程序使用SMTP协议来发送电邮到接
2023-01-31

python模块学习(queue模块的Q

学习版本3.5.2PriorityQueue类和LifoQueue类继承Queue类然后重写了_init、_qsize、_put、_get这四个类的私有方法Queue:先进先出队列的同步实现,通过双向列表实现的 # Initializ
2023-01-31

Python学习之MySQLdb模块

CentOS下安装sudo yum install MySQL-python可以参考http://www.mikusa.com/python-mysql-docs/index.html  获取更多信息MySQL-python 为Python
2023-01-31

Python学习之PyYaml模块

我需要解析twemproxy的配置文件中的pool和后端的redis主机。采用shell解析yml文件太麻烦,正好python有正对于yaml文件解析的pyyaml模块例如twemporxy的配置文件nutcracker.yamlalpha
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录