导入模块
想使用 Python 源文件,只需在另一个源文件里执行 import 语句
import module1[, module2[,... moduleN]
from语句让你从模块中导入一个指定的部分到当前命名空间中
from modname import name1[, name2[, ... nameN]]
内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回
>>> import sys >>> dir(sys) [‘__displayhook__‘, ‘__doc__‘, ‘__excepthook__‘, ‘__interactivehook__‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘, ‘__spec__‘, ‘__stderr__‘, ‘__stdin__‘, ‘__stdout__‘, ‘_clear_type_cache‘, ‘_current_frames‘, ‘_debugmallocstats‘, ‘_enablelegacywindowsfsencoding‘, ‘_getframe‘, ‘_git‘, ‘_home‘, ‘_xoptions‘, ‘api_version‘, ‘argv‘, ‘base_exec_prefix‘, ‘base_prefix‘, ‘builtin_module_names‘, ‘byteorder‘, ‘call_tracing‘, ‘callstats‘, ‘copyright‘, ‘displayhook‘, ‘dllhandle‘, ‘dont_write_bytecode‘, ‘exc_info‘, ‘excepthook‘, ‘exec_prefix‘, ‘executable‘, ‘exit‘, ‘flags‘, ‘float_info‘, ‘float_repr_style‘, ‘get_asyncgen_hooks‘, ‘get_coroutine_wrapper‘, ‘getallocatedblocks‘, ‘getcheckinterval‘, ‘getdefaultencoding‘, ‘getfilesystemencodeerrors‘, ‘getfilesystemencoding‘, ‘getprofile‘, ‘getrecursionlimit‘, ‘getrefcount‘, ‘getsizeof‘, ‘getswitchinterval‘, ‘gettrace‘, ‘getwindowsversion‘, ‘hash_info‘, ‘hexversion‘, ‘implementation‘, ‘int_info‘, ‘intern‘, ‘is_finalizing‘, ‘last_traceback‘, ‘last_type‘, ‘last_value‘, ‘maxsize‘, ‘maxunicode‘, ‘meta_path‘, ‘modules‘, ‘path‘, ‘path_hooks‘, ‘path_importer_cache‘, ‘platform‘, ‘prefix‘, ‘set_asyncgen_hooks‘, ‘set_coroutine_wrapper‘, ‘setcheckinterval‘, ‘setprofile‘, ‘setrecursionlimit‘, ‘setswitchinterval‘, ‘settrace‘, ‘stderr‘, ‘stdin‘, ‘stdout‘, ‘thread_info‘, ‘version‘, ‘version_info‘, ‘warnoptions‘, ‘winver‘]
__name__属性
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
if __name__ == ‘__main__‘: print(‘程序自身在运行‘) else: print(‘被另一模块调用模块‘)
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所指向的文件或者目录的最后修改时间
sys模块
sys.argv #可以在后面添加参数用sys.argv[x]来获取 sys.exit(n) #退出程序,正常退出时exit(0) sys.version #获取Python解释程序的版本信息 sys.maxint #最大的Int值 sys.path #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform #返回操作系统平台名称 sys.stdout.write(‘please:‘) #屏幕打印please
time & datetime模块
import time print(time.time()) #当前时间搓 print(time.localtime()) #当前时间的struct_time print(time.altzone) #返回与utc时间的时间差,以秒计算 print(time.asctime()) #返回时间格式"Mon Feb 12 00:27:57 2018", print(time.gmtime(time.time()-800000)) #返回utc时间的struc时间对象格式 # 日期字符串 转成 时间戳 time_struct = time.strptime("2016/05/22","%Y/%m/%d") #将日期字符串转成struct时间对象格式 stamp = time.mktime(time_struct) #将struct时间对象转成时间戳 #将时间戳转为字符串格式 print(time.gmtime(time.time() - 86640)) # 将utc时间戳转换成struct_time格式 print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将utc struct_time格式转成指定的字符串格式 x = time.localtime(11111) #设置时间 print(x.tm_year,x.tm_yday)#打印年和日 print(time.mktime(x)) #打印时间 #格式化打印 print(time.strftime(‘%Y-%m-%d %H:%M:%S‘,x)) print(time.asctime(x)) print(time.strptime("2016/05/22","%Y/%m/%d")) """ %a 本地(locale)简化星期名称 %A 本地完整星期名称 %b 本地简化月份名称 %B 本地完整月份名称 %c 本地相应的日期和时间表示 %d 一个月中的第几天(01 - 31) %H 一天中的第几个小时(24小时制,00 - 23) %I 第几个小时(12小时制,01 - 12) %j 一年中的第几天(001 - 366) %m 月份(01 - 12) %M 分钟数(00 - 59) %p 本地am或者pm的相应符 一 %S 秒(01 - 61) 二 %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 三 %w 一个星期中的第几天(0 - 6,0是星期天) 三 %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。 %x 本地相应日期 %X 本地相应时间 %y 去掉世纪的年份(00 - 99) %Y 完整的年份 %Z 时区的名字(如果不存在为空字符) %% ‘%’字符 """ import datetime print(datetime.date.fromtimestamp(time.time()) ) #时间戳直接转成日期格式 2016-08-19 print(datetime.datetime.now()) #当前时间 print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天 print(datetime.datetime.now().replace(hour=23))
random模块
import random print(random.random()) #用于生成一个0到1的随机符点数: print (random.randint(1,7)) #随机生成1-7之间的数 print (random.randrange(1,10,2)) #随机生成0-9直接的奇数 print(random.choice(‘罗毅,张驿‘)) #随机生成一个元素 print(random.choice([‘周思益‘,‘张驿‘,‘文艺‘,‘罗毅‘,‘林毅‘]))#随机生成一个名字 print(random.sample([1,2,3,4,5],3)) #随机获取指定长度的片段
json & pickle 模块
用于序列化的两个模块
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
import json data1 = { ‘name‘ : ‘刘瑶‘, ‘age‘ : 17, ‘post‘ : ‘student‘ } json_str = json.dumps(data1) print ("Python数据:", repr(data1))
print ("JSON对象:", json_str)
data2 = json.loads(json_str) print ("data2[‘name‘]: ", data2[‘name‘]) print ("data2[‘age‘]: ", data2[‘age‘]) """ 运行结果: Python数据: {‘name‘: ‘刘瑶‘, ‘age‘: 17, ‘post‘: ‘student‘} JSON对象: {"name": "\u5218\u7476", "age": 17, "post": "student"} data2[‘name‘]: 刘瑶 data2[‘age‘]: 17 """
json写入文件
# 写入 JSON 数据 with open(‘data.json‘, ‘w‘) as f: json.dump(data, f) #f.write(json.dumps(data))效果一样 # 读取数据 with open(‘data.json‘, ‘r‘) as f: data = json.load(f.read())
如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据
# 写入 JSON 数据 with open(‘data.json‘, ‘w‘) as f: json.dump(data, f) # 读取数据 with open(‘data.json‘, ‘r‘) as f: data = json.load(f)
shelve 模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
import pickle def abc(a): print(‘aaaa‘,a) data0 = { ‘name‘:‘易俊杰‘, ‘age‘:17, ‘post‘:‘student‘, ‘imformation‘:abc } #写入文件1 f = open(‘data.txt‘,‘wb‘) pickle.dump(data0,f) #f.write(pickle.dumps(data)) f.close() #读文件1 f = open(‘data.txt‘,‘rb‘) data3 = pickle.load(f) #data2 = json.loads(f.read()) print(data3[‘age‘]) data3[‘imformation‘](‘a‘) f.close() #写入文件2 class Text(object): def __init__(self,n): self.n = n d = shelve.open(‘shelve_txt‘) d[‘text‘] = Text(‘刘思明‘) d[‘name‘] = [‘谭佩瑶‘,‘陈贵龙‘,‘刘瑶‘] d.close() #读文件2 d2 = shelve.open(‘shelve_txt‘) print(d2.get(‘text‘).n) for k in d2: print(k,d2[k]) d2.close()
hashlib模块
用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。
import hashlib # ######## md5 ######## hash = hashlib.md5() hash.update(b‘root‘) print(hash.hexdigest()) # ######## sha1 ######## hash = hashlib.sha1() hash.update(b‘root‘) print(hash.hexdigest()) # ######## sha256 ######## hash = hashlib.sha256() hash.update(b‘root‘) print(hash.hexdigest()) # ######## sha384 ######## hash = hashlib.sha384() hash.update(b‘root‘) print(hash.hexdigest()) # ######## sha512 ######## hash = hashlib.sha512() hash.update(b‘root‘) print(hash.hexdigest())