您的位置:首页 > 其它

常见模块(一)

2016-02-26 11:52 363 查看
1.模块介绍就是一堆代码实现了某个功能的代码集合。类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中) 。 python 是函数式编程。模块由一个.py文件或多个.py模块组成。模块分为三种:1).自定义模块2).内置标准模块或称标准库3.)开源模块 https://pypi.python.org/pypi对于下面的问题需要完善和解释2.自定义模块根据需求编写py文件后形成可复用的内容,可作为模块加载使用。自定义模块导入方法:import modulefrom module.xx.xx import yy 其中xx代表子模块的名称,若模块就一级模块级module则不需要后面内容,yy则是需要调用的模块from module.xx.xx import yy as rename 给导入的模块定义别名from module.xx.xx import * 导入模块下所有 不推荐 ,因为默认情况不知道有哪些模块,可能会把自己的功能冲突,导致功能模块不可用。导入模块其实就是告诉Python解释器去解释那个py文件导入一个py文件,解释器解释该py文件导入一个包,解释器解释该包下的 __init__.py 文件关于导入模块的默认路径:由于在python安装后内置一些模块,而这些模块会在python制定的目录下,加入需要将开源模块和自定义模块使系统能自动识别,需要把自定义模块路径和开源模块路径加入到默认路径中,具体查找默认路径及修改默认路径方法如下:获取默认路径:import sysprint (sys.path)输出结果如下:
['E:\\Python\\S', 'E:\\Python\\', 'C:\\Windows\\system32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages', 'C:\\Python34\\lib\\site-packages\\win32', 'C:\\Python34\\lib\\site-packages\\win32\\lib', 'C:\\Python34\\lib\\site-packages\\Pythonwin']
[/code]在默认路径中是没有你自定义模块和开源模块路径(在安装过程中直接安装到次路径下除外)具体操作方法如下:
#!/usr/bin/env python
# -*-coding:utf-8 -*-
import  sys,os  导入sys  os模块
print('sys',__file__)
获取文件的相对路径
dir_base = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))  #获取文件的根目录
#os.path.abspath(__file___)获取文件的绝对路径
#os.path.dirname 获取文件的绝对路径目录,实际是将/符号前的内容进行删除操作,每执行一次,进行一次删除操作。
print('dir_base',dir_base)
sys.path.append(dir_base) #sys.path为系统默认变量,将刚刚的变量加入进临时变量
print(sys.path)
print(sys.path) 获取系统环境变量,默认为列表
默认执行错误的原因是由于文件默认是找不到最根目录,而user_name能执行的原因,因为他就在根目录。
[/code]
3.开源模块
Python 官方网站提供了一些被认证的开源模块可供下载,地址为:https://pypi.python.org/pypi
可以使用pip命令进行下载安装,也可手动下载后执行安装操作。
4.常用内置模块4.1 .time & datetime模块time 常用功能[/b]print(time.clock()) #返回处理器时间,3.3开始已废弃 用的比较少print(time.process_time()) #返回处理器时间,3.3开始已废弃print(time.time()) #返回当前系统时间戳 从1970开始,到现在的时间(这个是系统默认的,UNIX系统应该是1970年发布的。) 主要用来判断时间差print(time.ctime()) #输出Tue Jan 26 18:23:48 2016 ,当前系统时间print(time.ctime(time.time()-86400)) #将时间戳转为字符串格式 (后面数字的单位为秒,一天为86400秒)print(time.gmtime(time.time()-86400)) #将时间戳转换成struct_time格式 这个测试下,重要执行结果:>>> time.gmtime()time.struct_time(tm_year=2016, tm_mon=1, tm_mday=30, tm_hour=10, tm_min=22, tm_sec=54, tm_wday=5, tm_yday=30, tm_isdst=0)print(time.localtime(time.time()-86400)) #将时间戳转换成struct_time格式,但返回 的本地时间 和gmtime的时间区别是,gmtime返回的是格林威治时间,与localtime相差8个小时。print(time.mktime(time.localtime())) #与time.localtime()功能相反,将struct_time格式转回成时间戳格式#time.sleep(4) #sleepprint(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将struct_time格式转成指定的字符串格式输出结果:2016-02-19 02:33:36print(time.strptime("2016-01-28","%Y-%m-%d") ) #将字符串格式转换成struct_time格式与上面正好相反的不能直接把字符串转换成时间戳,把字符串转成时间戳,需要将字符串转换成struct_time,然后在将struct_time转换成时间戳datatime 模块print(datetime.date.today()) #输出格式 2016-01-26print(datetime.date.fromtimestamp(time.time()-864400) ) #2016-01-16 将时间戳转成日期格式current_time = datetime.datetime.now() #print(current_time) #输出2016-01-26 19:04:30.335935print(current_time.timetuple()) #返回struct_time格式#datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])print(current_time.replace(2014,9,12)) #输出2014-09-12 19:06:24.074900,返回当前时间,但指定的值将被替换str_to_date = datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M") #将字符串转换成日期格式new_date = datetime.datetime.now() + datetime.timedelta(days=10) #比现在加10天new_date = datetime.datetime.now() + datetime.timedelta(days=-10) #比现在减10天new_date = datetime.datetime.now() + datetime.timedelta(hours=-10) #比现在减10小时new_date = datetime.datetime.now() + datetime.timedelta(seconds=120) #比现在+120sprint(new_date)4.2.random模块 随机数import randomprint random.random() 产生随机数print random.randint(1,2) 在这个范围内产生随机数print random.randrange(1,10)dir(random) 查看方法例子:生成验证码:
import random
for i in range(6):  #6代表随机码的位数,因为每循环一次会随机生产一次,然后进行叠加到checkcode中。
corrent = random.randrange(0,4)
if corrent != i:
tmp = str(chr(random.randrange(65,90)))  #chr 是转换成ASCII码, 默认65-90为A-Z  使用str转换成字符串
else:
tmp = str(random.randrange(0,9))  #
checkcode += tmp
print(checkcode)
[/code]执行结果:
C:\Python34\python.exe E:/Python/随机数.py
SQVUHO
[/code]4.3.序列化序列化和反序列化传输或对外提供都是字符串和ASIC码, 列表、字典、元组是内存中的格式。
json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进行转换Json模块提供了四个功能:dumps、dump、loads、loadpickle模块提供了四个功能:dumps、dump、loads、loadimport pickledata = {'k1':123,'k2','123'}p_str = pickle.dumps(data)print p_strpickle.dumps 将数据通过特殊的形式转换为只有python语言能识别的字符串。with open('e:/test.txt','w') as ft:pikcle.dump (data,fp)pikcle.dump 将数据通过特殊的形式转换为只有python语言能识别的字符串。并写入文件。json.dumps  将数据通过特殊的形式转换为所有程序语言都能认识的字符串json.dump  将数据通过特殊的形式转换为所有程序语言都能认识的字符串,并写入文件。load、loads 和dump、 dumps功能正好相反。pikcle 和 json 的区别在于,pikcle能对python环境下任何格式文件存储到文件中,通过load/loads进行还原后仍是原有的格式。而json则只能对字符串等常见格式进行格式化存储,因此假若程序旨在python环境下运行,使用pikcle最为合适,若需要与其他程序进行互通,则需要使用json,保障其他语言能读取。经测试,json不支持str格式
来自为知笔记(Wiz)
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: