python 模块的介绍(一)
模块让你能够有逻辑地组织你的Python代码段。
把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。
模块也是Python对象,具有随机的名字属性用来绑定或引用。
简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。
模块分为三种:
- 自定义模块
- 内置模块 (又称标准库)
- 第三方模块 (又称第三方模块)
自定义模块:
也就是自己写的, 创建一个.py文件 自己实现一些功能 叫做自定义模块
导入模块:
Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:
Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:
当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块hello.py,需要把命令放在脚本的顶端:
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。 import 文件名 Python的from语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下
例如,要导入模块zzz的xxx函数,使用如下语句: 这
个声明不会把整个zzz模块导入到当前的命名空间中,
它只会将zzz里的xxx单个引入到执行这个声明的模块的全局符号表。 from zzz import xxx 把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明: 这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
from module.xx.xx import *
导入模块其实就是告诉Python解释器去解释那个py文件
- 导入一个py文件,解释器解释该py文件
- 导入一个包,解释器解释该包下的 __init__.py 文件
- 那么问题来了,导入模块时是根据那个路径作为基准来进行的呢?即:sys.path
#!/usr/bin/env/python
# -*- coding:utf-8 -*- import sys #获取给脚本传入的参数
print(sys.path) D:\python3.5\python.exe D:/untitled/python3/sys模块.py
['D:\\untitled\\python3', 'D:\\untitled', 'D:\\python3.5\\python35.zip', 'D:\\python3.5\\DLLs', 'D:\\python3.5\\lib', 'D:\\python3.5', 'D:\\python3.5\\lib\\site-packages'] Process finished with exit code 0
import sys
sys.path.append('D:\\untitled\\python1\\day1.py')
print(sys.path)
D:\python3.5\python.exe D:/untitled/python3/sys模块.py
['D:\\untitled\\python3', 'D:\\untitled', 'D:\\python3.5\\python35.zip', 'D:\\python3.5\\DLLs', 'D:\\python3.5\\lib', 'D:\\python3.5', 'D:\\python3.5\\lib\\site-packages', 'D:\\untitled\\python1\\day1.py'] Process finished with exit code 0
还可以去往上下载安装模块 安装成功后,模块会自动安装到 sys.path 中的某个目录中,如:
/usr/lib/python2.7/site-packages/
第三方模块:
有两种安装方式:
一 ,在管理工具中安装 软件管理工具 pip3路径添加到环境变量 pip3路径: C:\Python35\Scripts 添加环境变量:【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】、
二,源码安装下载代码,安装
1 先下载
https://github.com/kennethreitz/requests/tarball/master
2、解压
3、进入目录
4、执行python setup.py install
site-packages 是存放第三方安装的模块
内置模块:
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所指向的文件或者目录的最后修改时间
常用的
os.stat('path/filename') 获取文件/目录信息 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
time 模块:
时间相关的操作,时间有三种表示方式:
- 时间戳 1970年1月1日之后的秒,即:time.time()
- 格式化的字符串 2014-11-11 11:11, 即:time.strftime('%Y-%m-%d')
- 结构化时间 元组包含了:年、日、星期等... time.struct_time 即:time.localtime()
导入模块
import time print(time.time()) #返回当前系统时间戳 1970年Linux系统诞生到现在的秒数
执行结果: 1463843836.9476368 print(time.ctime()) #输出当前的系统时间
执行结果:Sat May 21 23:17:57 2016 print(time.ctime(time.time()-86400)) #将当前时间减一天转为字符串格式
执行结果:Fri May 20 23:19:53 2016 print(time.gmtime(time.time()-86400)) #将当前时间转换成_time格式
执行结果:time.struct_time(tm_year=2016, tm_mon=5, tm_mday=20, tm_hour=15, tm_min=21, tm_sec=43, tm_wday=4, tm_yday=141, tm_isdst=0) print(time.localtime(time.time()-86400)) #本地时间转换为strruct_time格式
执行结果:time.struct_time(tm_year=2016, tm_mon=5, tm_mday=20, tm_hour=23, tm_min=24, tm_sec=16, tm_wday=4, tm_yday=141, tm_isdst=0) print(time.mktime(time.localtime()))#于time.localtime()功能相反,将struct_time格式转回成当地时间戳格式
执行结果:1463844332.0 print('kaixin')
time.sleep(4) #时间间隔4秒
print('gege')
执行结果 #操作一遍就明白了
kaixin
gege print(time.strftime('%Y-%m -%d %H:%M:%S',time.gmtime())) #将struct_time格式转成指定的字符串格式
执行结果:2016-05 -21 15:31:32 print(time.strptime('2016-01-28','%Y-%m-%d')) #将字符串格式转换成struct_time格式
执行结果:time.struct_time(tm_year=2016, tm_mon=1, tm_mday=28, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=28, tm_isdst=-1)
import datetime
print(datetime.date.today()) #输出当前的日期
执行结果:2016-05-22 print(datetime.date.fromtimestamp(time.time()-84600))#-84600减一天 #输出前一天的时间
执行结果:2016-05-21 current_time = datetime.datetime.now()
print(current_time) #输出 当前时间
执行结果:2016-05-22 00:15:15.434901 print(current_time.timetuple()) #输出返回struct_time格式
执行结果:time.struct_time(tm_year=2016, tm_mon=5, tm_mday=22, tm_hour=0, tm_min=15, tm_sec=15, tm_wday=6, tm_yday=143, tm_isdst=-1) print(current_time.replace(2015,10,10)) #输出2015-10-10的日期当前的时间
执行结果:2015-10-10 00:15:15.434901 str_to_date = datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
print(str_to_date) #将字符串转换成日期格式
执行结果:2006-11-21 16:30:00
new_data = datetime.datetime.now()+datetime.timedelta(days=10)
print(new_data) #当前的日期加10天
new_data = datetime.datetime.now()+datetime.timedelta(days=-10)
print(new_data) #当前的日期减10天
new_data = datetime.datetime.now()+datetime.timedelta(hours = 10)
print(new_data) #当前时间-10小时
new_data = datetime.datetime.now()+datetime.timedelta(seconds = 120)
print(new_data) #当前时间加120秒 执行结果 2016-06-01 00:09:36.236987
2016-05-12 00:09:36.236987
2016-05-22 10:09:36.236987
2016-05-22 00:11:36.236987
random 模块:
随机数
mport random
print random.random()
print random.randint(1,2)
print random.randrange(1,10)
# import random 导入 随机模块, #验证码的操作 random.randint(1,99) #随机数字 temp = '' 定义一个空字付串 for i in range(6): 循环6次 q = random.randrange(0,4) 自动生成一个0-4的随机数 if q == 3 or q == 1: 如果随机数等于3 或 1就生成小写字母 c2 = random.randrange(0,10) 生成 0--10内的随机数 temp = temp + str(c2) 向变量中添加当前数字对应的ascii码的字符 else: c = random.randrange(65,91) 生成 65-91内的随机数 z = chr(c) temp = temp + z 向变量中添加当前数字对应的ascii码的字符 print(temp)
sys 模块:
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
sys.stdin 输入相关
sys.stdout 输出相关
sys.stderror 错误相关
进度条:
import sys
import time
for i in range(31):
sys.stdout.write("\r")
sys.stdout.write("%s%% | %s" % (int(i/30*100),int(i/30*100)*'*'))
sys.stdout.flush()
time.sleep(0.1)
pickle模块
pickle模块提供了四个功能:dumps、dump、loads、load
pickle.dumps(obj): 把任意对象序列化成一个str,然后把这个str写入文件
pickle.loads(string): 反序列化出对象
pickle.dump(obj,file):直接把对象序列化后写入文件
pickle.load(file):从文件中反序列化出对象
import pickle
data = {'k1':'123','k2':'hello'}
m = pickle.dumps(data) 将数据通过特殊的形式转化为只有python语言认识的字符串
print(m) with open('D:/result.pk','w') as x:
pickle.dump(data,fp) 将数据通过特殊的形式转化为只有python语言认识的字符串,并写入文件 import json
n = json.dumps(data) 将数据通过特殊的形式转化为所有程序语言都认识的字符串
print(n) with open('D:/result.json','w') as x: #将数据通过特殊的形式转化为所有程序语言都认识的字符串,并写入文件
json.dump(data,x)
购物金额操作
#**************
import pickle accounts = {
1000: {
'name':'Alex LI',
'email': 'lijie3721@126.com',
'passwd': 'abc123',
'balance': 15000,
'phone': 13651054608,
'bank_acc':{
'ICBC':14324234,
'CBC' : 235234,
'ABC' : 35235423
}
},
1001: {
'name': 'CaiXin Guo',
'email': 'caixin@126.com',
'passwd': 'abc145323',
'balance': -15000,
'phone': 1345635345,
'bank_acc': {
'ICBC': 4334343,
}
},
} f = open('accounts.db','wb')
f.write(pickle.dumps(accounts))
f.close()
import pickle acc_file_name = "accounts.db"
account_file = open(acc_file_name,'rb')
account_dic = pickle.loads(account_file.read())
account_file.close()
print(account_dic) account_dic[1000]['balance'] -= 500 f = open(acc_file_name,'wb')
f.write(pickle.dumps(account_dic))
f.close()
print(account_dic)
import pickle f = open("accounts.db",'rb')
account_db = pickle.loads(f.read())
print(account_db)
hashlib 模块
用于加密相关操作
hashlib模块
import hashlib
hash = hashlib.md5(bytes('qwertyu132qqa',encoding='utf-8'))
hash.update(bytes('789456',encoding='utf-8'))
print(hash.hexdigest())
小练习:
import hashlib def md5(arg):
ooo = hashlib.md5(bytes('kai;x,in',encoding='utf-8'))
ooo.update(bytes(arg,encoding='utf-8'))
return ooo.hexdigest() def login(user,pwd):
with open('db','r',encoding='utf-8')as f:
for line in f:
u ,p =line.strip().split('|')
if u == user and p == md5(pwd):
return True def register(user,pwd):
with open('db','a',encoding='utf-8') as f:
temp = user + '|'+ md5(pwd)
f.write(temp) k = input('1,登录;2,注册')
if k == '2':
user = input('请输入用户名:')
pwd = input('请输入密码:')
register(user,pwd)
elif k == '1':
user = input('请输入用户名:')
pwd = input('请输入密码:')
r = login(user,pwd)
if r :
print('登陆成功')
else:
print('登录失败')
python 模块的介绍(一)的更多相关文章
- Python模块的介绍
Python模块的学习: 1.os模块: 下面只对os模块中几个比较常用的方法做一些简单的示例: os.system():这个方法在shell中体现的比较多,在dos命令行中也可以执行,下面就以在do ...
- python 模块基础介绍
从逻辑上组织代码,将一些有联系,完成特定功能相关的代码组织在一起,这些自我包含并且有组织的代码片段就是模块,将其他模块中属性附加到你的模块的操作叫做导入. 那些一个或多个.py文件组成的代码集合就称为 ...
- python模块介绍- multi-mechanize 性能测试工具
python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...
- python模块介绍- xlwt 创建xls文件(excel)
python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...
- python模块介绍- binascii 二进制和ASCII转换
python模块介绍-binascii二进制和ASCII转换 目录 项目简介 简介: Uu编码 Binhex编码 Base64编码 QP码 CRC校验和 二进制转换 其他实例 项目简介 Python中 ...
- python模块介绍- HTMLParser 简单的HTML和XHTML解析器
python模块介绍- HTMLParser 简单的HTML和XHTML解析器 2013-09-11 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq ...
- python成长之路【第十八篇】:python模块介绍、模块导入和重载
一.模块和命名空间 一般来说,Python程序往往由多个模块文件构成,通过import语句连接在一起.每个模块文件是一个独立完备的变量包,即一个命名空间.一个模块文件不能看到其他文件定义的变量名,除非 ...
- python shutil模块简单介绍
python shutil模块简单介绍 简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. shutil 模块方法: copy(src, ...
- Python 模块EasyGui详细介绍
转载:无知小德 Python 模块EasyGui详细介绍 EasyGui 官网: http://easygui.sourceforge.net 官方的教学文档:http://easygui-docs- ...
随机推荐
- net面试 ASP.NET页面传值的各种方法和分析 (copy)
Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题 ...
- SAE上安装第三方模块
当sae上没有自己所需要的第三方模块时,可以使用saecloud install package [package...]将所需要的模块安装到本地应用文件夹下,然后在index.wsgi下添加如何代码 ...
- Html代码保存为Pdf文件
前段时间Insus.NET有实现了<上传Text文档并转换为PDF>http://www.cnblogs.com/insus/p/4313092.html 和<截取视图某一段另存为部 ...
- ASP.NET中获取当日,当周,当月,当年的日期
ASP.NET中获取当日,当周,当月,当年的日期 在ASP.NET开发中,经常会碰到要获取当日,当周,当月,当年的日期. 以下将源码贴出来和大家分享. aspx中代码如下: <table ce ...
- Linux Linux程序练习十六(进程间的通信信号版)
/* * 题目: * 编写程序,要去实现如下功能: 父进程创建子进程1和子进程2.子进程1向子进程2发送可靠信号,并传送额外数据为子进程1的pid*2; 子进程2接受可靠信号的值,并发送给父进程,父进 ...
- IO(一)----字节流
File类是文件的抽象表示,如果要对文件的内容进行读写就需要使用IO流技术. IO流简介:(Input/Output) I/O类库中使用"流"这个抽象概念.Java对设备中数据的操 ...
- iptables/Netfilter 学习
开始学iptables,因为它是和路由器技术紧密结合在一起的. iptables的命令看起来眼花缭乱,随便找两个: iptables -A FORWARD -p tcp -s -d -j ACCEPT ...
- Oracle 数据库日常巡检
1. 检查数据库基本状况 包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分. 1.1. 检查Oracle实例状态 select instance_name ...
- Python2.3-原理之语句和语法
此节来自于<Python学习手册第四版>第三部分 一.python语句简介(第10章) 1.首先记得一个概念:a.程序由模块构成:b.模块包含语句:c.语句包含表达式:d.表达式建立并处理 ...
- DTCMS插件的制作实例电子资源管理(一)插件目录结构
总目录 插件目录结构(一) Admin后台页面编写(二) 前台模板页编写(三) URL重写(四) 本实例旨在以一个实际的项目中的例子来介绍如何在dtcms中制作插件,本系列文章非入门教程,部分 ...