您的位置:首页 > 编程语言 > Python开发

python学习之路-模块

2017-08-12 17:40 555 查看
大纲:

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不存在,返回False
27.os.path.isabs(path)#如果path是绝对路径,返回True
28.os.path.isfile(path)#如果path是一个存在的文件,返回True。否则返回False
29.os.path.isdir()#如果path是一个存在的目录,则返回True。否则返回False
30.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 sys
1.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 random
print(random.random())#返回随机生成的一个实数,它在[0,1)范围内。
print(random.randint(1,3))#生成随机整数1,2,3
print(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 time
time.localtime([secs])#将一个时间戳转换为当前时区的struct_time
time.gmtime([secs])#将一个时间戳转换为UTC时区(0时区)的struct_time
time.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_time
time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')


import datetime
print(datetime.datetime.now())#获取当前时间
print(datetime.datetime.now()+datetime.timedelta(3))#当前时间退后3天
print(datetime.datetime.now()+datetime.timedelta(-3))#当前时间提前3天


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

import shutil
shutil.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的所有option
configparser.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 hashlib
md=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   5d41402abc4b2a76b9719d911017c592
print(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 paramiko
ssh=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,sys
import paramiko
t = 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,sys
import paramiko
t = 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 paramiko
private_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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: