博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 模块的介绍(一)
阅读量:4942 次
发布时间:2019-06-11

本文共 9563 字,大约阅读时间需要 31 分钟。

 

模块让你能够有逻辑地组织你的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
 如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append('路径') 添加。
import syssys.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下cdos.curdir  返回当前目录: ('.')os.pardir  获取当前目录的父目录字符串名:('..')os.makedirs('dirname1/dirname2')    可生成多层递归目录os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirnameos.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirnameos.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不存在,返回Falseos.path.isabs(path)  如果path是绝对路径,返回Trueos.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回Falseos.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回Falseos.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不存在,返回Falseos.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.9476368print(time.ctime()) #输出当前的系统时间  执行结果:Sat May 21 23:17:57 2016print(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.0print('kaixin')time.sleep(4) #时间间隔4秒print('gege')执行结果   #操作一遍就明白了kaixingegeprint(time.strftime('%Y-%m -%d %H:%M:%S',time.gmtime())) #将struct_time格式转成指定的字符串格式执行结果:2016-05 -21 15:31:32print(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-22print(datetime.date.fromtimestamp(time.time()-84600))#-84600减一天 #输出前一天的时间执行结果:2016-05-21current_time = datetime.datetime.now()print(current_time)  #输出 当前时间执行结果:2016-05-22 00:15:15.434901print(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.434901str_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.2369872016-05-12 00:09:36.2369872016-05-22 10:09:36.2369872016-05-22 00:11:36.236987

 

 

 random 模块:

随机数mport randomprint 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 sysimport timefor 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 pickledata = {'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 jsonn = json.dumps(data)  将数据通过特殊的形式转化为所有程序语言都认识的字符串print(n)with open('D:/result.json','w') as x:  #将数据通过特殊的形式转化为所有程序语言都认识的字符串,并写入文件    json.dump(data,x)

 

购物金额操作#**************import pickleaccounts = {    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 pickleacc_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'] -= 500f = open(acc_file_name,'wb')f.write(pickle.dumps(account_dic))f.close()print(account_dic)

 

import picklef = open("accounts.db",'rb')account_db = pickle.loads(f.read())print(account_db)

 hashlib 模块

用于加密相关操作

hashlib模块import hashlibhash = hashlib.md5(bytes('qwertyu132qqa',encoding='utf-8'))hash.update(bytes('789456',encoding='utf-8'))print(hash.hexdigest())

 

 小练习:

import hashlibdef 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 Truedef 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('登录失败')

 

转载于:https://www.cnblogs.com/guokaixin/p/5515749.html

你可能感兴趣的文章
用查表法快速转换yv12到RGB【转】
查看>>
使用公钥登录SSL
查看>>
hdu 1290_献给杭电五十周年校庆的礼物
查看>>
Nginx 入门
查看>>
openCR-用ROS代码点亮LED的方法
查看>>
豆瓣电影api
查看>>
BufferedInputStream和FileInputStream的区别
查看>>
二阶段之六
查看>>
微博爬虫 python
查看>>
中石油 【递归】普通递归关系
查看>>
vue报错Error in render: "TypeError: Cannot read property '0' of undefined"
查看>>
silverlight 隐藏ChildWindow 右上角的关闭按钮
查看>>
likely() 和 unlikely()
查看>>
03一些View总结
查看>>
MapReduce--平均分,最高,低分以及及格率的计算
查看>>
mac下管理论文的工具
查看>>
POJ3122Pie(二分)
查看>>
WF+WCF+WPF第二天--模拟超市收银
查看>>
爬取贴吧好看的桌面图片 -《狗嗨默示录》-
查看>>
[转]这13个开源GIS软件,你了解几个?
查看>>