python学习之路-模块

来源:互联网 发布:激光雷达避障算法 编辑:程序博客网 时间:2024/05/23 20:05

大纲:
1.模块的基础知识
2.标准库模块
2.1 os
2.2 sys
2.3 random
2.4 time和datetime
2.5 shutil
2.6 shelve
2.7 configparser
2.8 hashlib
2.9 re
2.10 xml
2.11 yaml
2.12 pickle&json
2.13 paramiko
一.模块基础知识
模块:本质–.py结尾的python文件。用来从逻辑上组织python代码(变量,函数,类:实现一个功能)
模块的导入方法:

1.import moduels(模块名字)2.import moduels (模块名字) as  X#给导入的模块起别名,可以通过别名调用3.from modules(模块名字) import func(方法)#从什么模块导入什么方法   4.from package.modules import func(方法) #从一个包的什么模块导入什么方法       

impor本质把python文件解释一遍
包的本质:就是一个目录(必须带有一个init.py文件)
导入包的本质:执行该包下的init.py文件
模块分类:标准库模块,开源模块,自定义模块
二.标准库模块
1.os模块–普通的操作系统功能

import os#模块导入1.os.open()#打开文件f=open("litter pricen","r",encoding="utf-8")2.os.read()#读取文件内容,一次性读完f.read()3.os.close()#关闭文件f.close()4.os.popen()#从一个命令打开一个管道#os.popen(command[, mode[, bufsize]])  command -- 使用的命令。mode -- 模式权限可以是 'r'(默认) 或 'w'。#bufsize -- 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲# (大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;# 对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。#返回值:返回一个文件描述符号为fd的打开的文件对象os.popen("mkdir nwdir","r",1)5.os.remove(path)#删除一个文件6.os.remove("test.txt")7.os.getcwd()#获取当前工作目录,即当前python脚本工作的目录路径print(os.getcwd())8.os.chdir()#把当前脚本切换到另一个目录下9.os.chdir("D:\\tmp" )#win下10.os.curdir()#返回当前目录11.os.pardir()#获取当前目录的父目录字符串名,在window中这个代表着上级目录12.os.makedirs(path,mode)#递归的创建目录 path -- 需要递归创建的目录  mode -- 权限模式。13.os.removedirs(path)#递归删除目录,若目录为空,则删除,并递归到上一级目录,如若也为空,则删除14.os.mkdir(path,mode)#创建单级目录15.os.rmdir(path)#删除单级空目录,若目录不为空则无法删除16.os.listdir(path)#l列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印17.os.rename("sname","dname")#重命名目录或者文件名称18.os.stat()#print(os.stat("G:\\"))os.sep#输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"19.os.linesep#输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"20.os.pathsep#输出用于分割文件路径的字符串21.os.name#输出字符串指示当前使用平台。win->'nt'; Linux->'posix'22.os.system(command)#运行shell命令,直接显示23.os.environ#获取系统环境变量24.os.path.abspath(path)#返回path规范化的绝对路径25.os.path.dirname(path)#返回path的目录。其实就是os.path.split(path)的第一个元素26.os.path.exists(path)#如果path存在,返回True;如果path不存在,返回False27.os.path.isabs(path)#如果path是绝对路径,返回True28.os.path.isfile(path)#如果path是一个存在的文件,返回True。否则返回False29.os.path.isdir()#如果path是一个存在的目录,则返回True。否则返回False30.os.path.join(path1,path2...)#将多个路径组合后返回31.os.path.getatime(path)#返回path所指向的文件或者目录的最后存取时间32.os.path.getmtime(path)#返回path所指向的文件或者目录的最后修改时间

动态获取绝对路径

import os#动态获取绝对路径print(os.path.abspath(__file__))print(os.path.dirname(os.path.abspath(__file__)))#只保留目录去掉文件的文件名dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

2.sys模块

import sys1.sys.argv #命令行参数List,第一个元素是程序本身路径print(sys.argv[0])#第一个元素是程序本身路径2.sys.exit()#退出程序(一般用于程序中途退出程序)。(0是正常退出,其他为异常)3.sys.version#获取Python解释程序的版本信息4.sys.path#返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值sys.stdin\stdout\stderr#stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. # 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的.#  你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), # 或者以非标准的方式处理它们5.sys.path.append(path)#添加环境变量

3.random模块

import randomprint(random.random())#返回随机生成的一个实数,它在[0,1)范围内。print(random.randint(1,3))#生成随机整数1,2,3print(random.randrange(1,15))#random.randrange ([start,] stop [,step]) # 返回指定递增基数集合中的一个随机数,基数缺省值为1

生成随机验证码

import random#生成六位随机验证码code=[]for i in range(6):    if i==random.randint(1,5):#random.choice也可以        code.append(str(random.randint(1,5)))    else:        temp=random.randint(65,90)#生成随机大写字母        code.append(chr(temp))print(''.join(code))#生成四位随机验证码checkcode=''for i in range(4):    current=random.randrange(0,4)    if current==i:        tmp=chr(random.randrange(65,90))    else:        tmp=random.randrange(0,9)    checkcode=checkcode+str(tmp)print(checkcode)

4.time和datetime模块
在python中通常有3中形式来表示时间
1)格式化字符串
2)时间戳 时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移
3)元祖(struct_time)struct_time元组共有9个元素
UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。

import timetime.localtime([secs])#将一个时间戳转换为当前时区的struct_timetime.gmtime([secs])#将一个时间戳转换为UTC时区(0时区)的struct_timetime.time()#返回当前时间的时间戳time.mktime(t)#将一个struct_time转化为时间戳time.sleep(secs)#线程推迟指定的时间运行。单位为秒time.clock()#这在不同的系统上含义不同。# 在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。# 而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。# 而第二次之后的调用是自第一次调用以后到现在的运行时间。time.asctime([t])#把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。# 如果没有参数,将会将time.localtime()作为参数传入time.ctime([secs])#把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式#如果参数未给或者为None的时候,将会默认time.time()为参数time.strftime(format[, t])#把一个代表时间的元组或者struct_time# (如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串time.strftime("%Y-%m-%d %X", time.localtime())time.strptime(string[, format])#把一个格式化时间字符串转化为struct_timetime.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')
import datetimeprint(datetime.datetime.now())#获取当前时间print(datetime.datetime.now()+datetime.timedelta(3))#当前时间退后3天print(datetime.datetime.now()+datetime.timedelta(-3))#当前时间提前3天

5.shutil模块–高级的 文件、文件夹、压缩包 处理模块

import shutilshutil.copyfileobj(fsrc, fdst[, length])#将源文件fsrc内容拷贝到另一个文件fdst中,文件长度是length(可以只考贝一部分)shutil.copyfile(src, dst)#拷贝文件shutil.copymode(src, dst)#仅拷贝权限。内容、组、用户均不变shutil.copystat(src, dst)#拷贝状态的信息shutil.copy(src, dst)#拷贝文件和权限shutil.copy2(src, dst)#拷贝文件和状态信息shutil.copytree(src, dst, symlinks=False, ignore=None)#递归的去拷贝文件shutil.rmtree(path[, ignore_errors[, onerror]])#递归的去删除文件shutil.move(src, dst)#递归的去移动文件shutil.make_archive(base_name, format,...)#创建压缩包并返回文件路径,例如:zip、tar#base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,#format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”#root_dir: 要压缩的文件夹路径(默认当前目录)#owner: 用户,默认当前用户#group: 组,默认当前组#logger: 用于记录日志,通常是logging.Logger对象

6.shelve模块–数据存储
存储的东西可以当作字典,存储完毕可以close,它只有一个函数open,参数是文件名
shelve.open(filename, flag=’c’, protocol=None, writeback=False)
7.configparser模块–生成和修改配置文件

import configparser#配置文件是.cfg结尾的文件#以下是ConfigParser的基础语法configparser.ConfigParser.read()#直接读取ini(initial)文件内容(.ini初始化文件,该文件主要存放用户所做的选择以及系统的各种参数)configparser.ConfigParser.sections()#得到所有的section,并以列表的形式返回configparser.ConfigParser.options(section)#得到该section的所有optionconfigparser.ConfigParser.items(session)#得到该section的所有键值对configparser.ConfigParser.get(section,option)#得到section中option的值,返回为str类型configparser.ConfigParser.getint(section,option)#得到section中option的值,返回为int类型configparser.ConfigParser.set( section, option, value)#对section中的option进行设置,需要调用write将内容写入配置文件configparser.ConfigParser.add_section(section)#增加新的session

8.hashlib模块–用于加密相关的操作
主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
举例md5加密其余用法相同

import hashlibmd=hashlib.md5()md.update(b"hello")print(md.digest())#2进制格式hash  b']A@*\xbcK*v\xb9q\x9d\x91\x10\x17\xc5\x92'print(md.hexdigest()) #16进制格式hash   5d41402abc4b2a76b9719d911017c592print(len(md.hexdigest())) #32

9.re模块

import re#1.re.match的函数原型为:re.match(pattern, string, flags)#作用:从字符串的开头开始匹配test="hello world,study well and make progress evey day!"m=re.match(r"(\w+)\s", test)#r表示转义,相当于\print(m)#<_sre.SRE_Match object at 0x00000000028AEB70>#匹配成功则返回Match,匹配不成功返回none#pattern:正则表达式#string:需要匹配的内容#flags:匹配标志位,如:是否区分大小写,多行匹配等等#2.re.search的函数原型为: re.search(pattern, string, flags)#作用:在字符串中进行查找进行模糊匹配h=re.search(r"study\s",test)print(h)#<_sre.SRE_Match object at 0x0000000002B681D0>#参数和返回值同match#3.re.sub的函数原型为:re.sub(pattern, repl, string, count)#作用:替换字符串中的匹配项i=re.sub(r"\s",".",test)print(i)#hello.world,study.well.and.make.progress.evey.day!#count:替换个数,默认每个都替换#4.re.split(pattern, string, maxsplit=0)#作用:将字符串按照正则表达式进行划分,返回一个列表j=re.split(r"\s",test)print(j)#['hello', 'world,study', 'well', 'and', 'make', 'progress', 'evey', 'day!']#5.re.findall(pattern, string, flags=0)#作用:获取字符串中所有匹配的字符串,返回列表k=re.findall(r"w\w+",test)print(k)#['world', 'well']#6.re.compile(pattern, flags=0)#作用:把正则表达式编译成一个正则表达式对象l=re.compile("[a-z]")n=l.findall("HEshjkhsdkj")print(n)#['s', 'h', 'j', 'k', 'h', 's', 'd', 'k', 'j']

正则表达式列表
这里写图片描述
这里写图片描述
这里写图片描述
10.xml模块
可扩展标记语言(eXtensible Markup Language),在后面的前端会详细讲解
11.yaml模块
后期补充。。。
12.pickle&json模块–序列化和反序列化
详见day04
13.paramiko模块–用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作。
这里插播一个怎样在win环境下安装paramiko
首先在安装paramiko模块之前必须先安装easy_install 和pip(easy_install和pip都是用来下载安装Python一个公共资源库PyPI
的相关资源包的,pip是easy_install的改进版,提供更好的提示信 息,删除package等功能。老版本的python中只有easy_install, 没有pip。)
1)下载easy_install地址
https://pypi.python.org/pypi/ez_setup
在cmd下找到easy_install的安装目录
这里写图片描述
在这个目录下执行python ez_setup.py这个命令,安装完成后在python的根目录下会多出一个script的文件夹,把C:\Python30\Scripts这个添加到环境变量Path中(添加环境变量的步骤:此电脑->属性->高级->环境变量->系统变量->新建)
这里写图片描述
2)下载pip
下载地址:
https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb
进入到pip的setup.py所在的目录
这里写图片描述
执行命令:python setup.py install 进行安装
3)下载
下载地址:
http://files.cnblogs.com/files/wupeiqi/paramiko-1.10.1.tar.gz
和上面方式一样,进入paramiko的setup.py所在的目录,执行以下两条命令即可安装成功
python setup.py build
python setup.py install
4)进入pycharm进行验证,import paramiko能导入就是成功啦
通过用户名和密码连接服务器

import paramikossh=paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(ip地址, 端口号, 用户名, 密码)stdin, stdout, stderr = ssh.exec_command('df')print stdout.read()ssh.close();#上传和下载文件import os,sysimport paramikot = paramiko.Transport((IP,端口号))t.connect(username=用户名,password=密码)sftp = paramiko.SFTPClient.from_transport(t)sftp.put('/tmp/test.py','/tmp/test.py') t.close()import os,sysimport paramikot = paramiko.Transport((IP,端口号))t.connect(username=username=用户名,password=密码)sftp = paramiko.SFTPClient.from_transport(t)sftp.get('/tmp/test.py','/tmp/test2.py')t.close()

通过密钥连接服务器(公钥和密钥会后续补充)

import paramikoprivate_key_path = '/home/auto/.ssh/id_rsa'key = paramiko.RSAKey.from_private_key_file(private_key_path)ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect('主机名 ', 端口, '用户名', key)stdin, stdout, stderr = ssh.exec_command('df')print stdout.read()ssh.close()
原创粉丝点击