码迷,mamicode.com
首页 > 编程语言 > 详细

Python之路【第四篇】:模块

时间:2015-11-28 06:36:54      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

什么是模块:

模块就是一个功能的集合。

模块就和乐高积木差不多,你用这些模块组合出一个模型,然后也可以用这个模块加上其他的模块组合成一个新的模型

模块的种类:

1、内置模块(python自带的比如os、file等模块)

2、自定义模块,自己写的模块

3、第三方模块

模块的导入:

import module
from module.xx.xx import xx
from module.xx.xx import xx as rename  
from module.xx.xx import *

 内置模块

1、os用于提供系统级别的操作

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: (‘.‘)
os.pardir  获取当前目录的父目录字符串名:(‘..‘)
os.makedirs(‘dirname1/dirname2‘)    可生成多层递归目录
os.removedirs(‘dirname1‘)    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir(‘dirname‘)    生成单级目录;相当于shell中mkdir dirname
os.rmdir(‘dirname‘)    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir(‘dirname‘)    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat(‘path/filename‘)  获取文件/目录信息
os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串
os.name    输出字符串指示当前使用平台。win->‘nt‘; Linux->‘posix‘
os.system("bash command")  运行shell命令,直接显示
os.environ  获取系统环境变量
os.path.abspath(path)  返回path规范化的绝对路径
os.path.split(path)  将path分割成目录和文件名二元组返回
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间

 2、sys用于提供对解释器相关的操作

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0)
sys.version        获取Python解释程序的版本信息
sys.maxint         最大的Int值
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
sys.stdout.write(‘please:‘)
val = sys.stdin.readline()[:-1]

 3、hashlib

mport hashlib
 
# ######## md5 ########
 
hash = hashlib.md5()
hash.update(‘shuaige‘)
print hash.hexdigest()
 
>>> import hashlib
>>> hash = hashlib.md5()
>>> hash.update(‘shuaige‘)
>>> print hash.hexdigest()
37d2b9990df5a6843caf19352fee42a6

# ######## sha1 ########
 
hash = hashlib.sha1()
hash.update(‘shuaige‘)
print hash.hexdigest()

>>> hash = hashlib.sha1()
>>> hash.update(‘shuaige‘)
>>> print hash.hexdigest()
fdb58cf91e7291b67815440281e4154e87747b68
# ######## sha256 ########
 
hash = hashlib.sha256()
hash.update(‘shuaige‘)
print hash.hexdigest()
 
>>> hash = hashlib.sha256()
>>> hash.update(‘shuaige‘)
>>> print hash.hexdigest()
0dc6e2b03447ac1fde5a8ae5f9d609b2b37f26f5c8aeec5d244dde6184fde90d
# ######## sha384 ########
 
hash = hashlib.sha384()
hash.update(‘shuaige‘)
print hash.hexdigest()

>>> hash = hashlib.sha384()
>>> hash.update(‘shuaige‘)
>>> print hash.hexdigest()
6dd79c38dc27c8f69411c2e77face2209606e08702fcbe7c5f73bb9e6a9ef1f58890156604ad6c71581dc5b6f7aea85e
# ######## sha512 ########
 
hash = hashlib.sha512()
hash.update(‘shuaige‘)
print hash.hexdigest()

>>> hash = hashlib.sha512()
>>> hash.update(‘shuaige‘)
>>> print hash.hexdigest()
e9c94882cb0d9c61919f4d4c539a8bafe5f5a0708d214fbd50343c1e96a01ebb732883d0b0b36bff1e542cff69071395f511650944561807488700c71fb06338

 以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。

hash = hashlib.md5(‘898oaFs09f‘)
hash.update(‘shuaige‘)
print hash.hexdigest()

-----------------------------------------------------------------------------------

>>> hash = hashlib.md5(‘898oaFs09f‘)  #这里把自定义的信息加上然后在进行加密
>>> hash.update(‘shuaige‘)
>>> print hash.hexdigest()
6d1233c4e14a52379c6bc7a045411dc3

 还有厉害的加密方法:python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密

import hmac
h = hmac.new(‘shuaige‘)
h.update(‘hello laoshi‘)
print h.hexdigest()

 4、json 和 pickle

用于序列化的两个模块

json,用于字符串 和 python数据类型间进行转换
pickle,用于python特有的类型 和 python的数据类型间进行转换

json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load

json dumps把数据类型转换成字符串 dump把数据类型转换成字符串并存储在文件中  loads把字符串转换成数据类型  load把文件打开从字符串转换成数据类型

pickle同理

现在有个场景在不同设备之间进行数据交换很low的方式就是传文件,dumps可以直接把服务器A中内存的东西发给其他服务器,比如B服务器、
在很多场景下如果用pickle的话那A的和B的程序都的是python程序这个是不现实的,很多时候都是不同的程序之间的内存交换怎么办?就用到了json(和html类似的语言)
并且josn能dump的结果更可读,那么有人就问了,那还用pickle做什么不直接用josn,是这样的josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),比如日期格式、类对象!josn就不行了。
为什么他不能序列化上面的东西呢?因为josn是跨语言的!

 

5、ConfigParser

用于对特定的配置进行操作,当前模块的名称在 python 3.x 版本中变更为 configparser。

# 注释1
; 注释2
 
[section1]
k1 = v1
k2:v2
 
[section2]
k1 = v1

	
import ConfigParser
 
config = ConfigParser.ConfigParser()
config.read(‘i.cfg‘)
 
# ########## 读 ##########
#secs = config.sections()
#print secs
#options = config.options(‘group2‘)
#print options
 
#item_list = config.items(‘group2‘)
#print item_list
 
#val = config.get(‘group1‘,‘key‘)
#val = config.getint(‘group1‘,‘key‘)
 
# ########## 改写 ##########
#sec = config.remove_section(‘group1‘)
#config.write(open(‘i.cfg‘, "w"))
 
#sec = config.has_section(‘shuaige‘)
#sec = config.add_section(‘shuaige‘)
#config.write(open(‘i.cfg‘, "w"))
 
 
#config.set(‘group2‘,‘k1‘,11111)
#config.write(open(‘i.cfg‘, "w"))
 
#config.remove_option(‘group2‘,‘age‘)
#config.write(open(‘i.cfg‘, "w"))

 自定义模块

自定义模块一般都是自己写的可以是独立的一个.py文件也可以是一个文件夹

但是普通的文件夹不是一个模块必须有__int__的目录才是模块

技术分享

开源模块

下载安装有两种方式:

通过第三方的集成安装

yum 
pip
apt-get
...

 通过源码安装

下载源码
解压源码
进入目录
编译源码    python setup.py build
安装源码    python setup.py install

 注:在使用源码安装时,需要使用到gcc编译和python开发环境

 未完待续。。。。。。。。。

Python之路【第四篇】:模块

标签:

原文地址:http://www.cnblogs.com/luotianshuai/p/5002110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!