zoukankan      html  css  js  c++  java
  • 模块

    模块

    模块,用一砣代码实现了某个功能的代码集合。

    模块分为三种:

    1)自定义模块

    2)内置模块

    3)开源模块(第三方模块)

    模块的导入:

    导入模块时是根据那个路径进行的

    1 from lib.account import login  #from 文件路径 import 模块  #在哪导入模块
    
    2 import login

    导入模块就是告诉python解释器去解释py文件

    • 导入一个py文件,解释器解释该py文件
    • 导入一个包,解释器解释该包下的 __init__.py 文件

    查看模块路径;导入模块路径

    示例:

    import sys
    for i in sys.path: #查看路径
        print(i)
    
    
    
    import sys
    sys.path.append("D:")  #导入模块的路径
    for i in sys.path:
        print(i)

     安装模块:

    1)软件管理工具安装(pip3)

      pip3路径添加到环境变量     pip3路径: C:....python35Scripts

      pip3 install requests

    2)源码安装

      下载代码,安装:

      1,先下载     https://github.com/kennethreitz/requests/tarball/master

      2,解压

      3,进入目录

      4,执行python setup.py install

    内置模块

    time模块

    时间戳  1970年1月1日

    格式化的字符串

    结构化时间  

     1 import time
     2 
     3 print(time.time())  #输出1463671696.212329 返回当前系统时间戳
     4 print(time.ctime()) #输出Thu May 19 22:52:20 2016  当前系统时间
     5 print(time.ctime(time.time() - 86400)) #输出Wed May 18 22:54:23 2016 过去一天的当前时间
     6 print(time.gmtime(time.time() - 86400)) #将时间戳转换成struct_time格式
     7 print(time.process_time())  # 0.0780005输出返回处理器时间
     8 print(time.localtime(time.time() - 86400)) #将时间戳转换成struct_time格式,但返回本地时间
     9 print(time.mktime(time.localtime())) #输出1463671089.0 与time.localtime()功能相反,将struct_time格式转回成时间戳格式
    10 print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())) #输出2016-05-19 15:24:08 将struct_time格式转成指定的字符串格式
    11 print(time.strptime("2016-05-19","%Y-%m-%d") ) #将字符串格式转换成struct_time格式
    12 
    13 import datetime
    14 
    15 print(datetime.date.today())  #输出2016-05-19
    16 
    17 print(datetime.date.fromtimestamp(time.time() - 86400)) #输出2016-05-18 过去一天
    18 
    19 current_time = datetime.datetime.now()
    20 print(current_time)  #输出2016-05-19 23:50:12.064591
    21 
    22 print(current_time.timetuple())  #返回struct_time格式
    23 
    24 
    25 print(current_time.replace(2015,9,1)) #输出2015-09-01 00:13:09.001347 返回当前时间,但指定的值将被替换
    26 
    27 str_to_date = datetime.datetime.strptime("20/05/16 0:06", "%d/%m/%y %H:%M") #将字符串转换成日期格式
    28 print(str_to_date) #输出2016-05-20 00:06:00
    29 
    30 new_date = datetime.datetime.now() + datetime.timedelta(days=10) #比现在加10天
    31 print(new_date) #输出2016-05-30 00:13:09.042349
    32 
    33 new_date = datetime.datetime.now() + datetime.timedelta(days=-10) #比现在减10天
    34 print(new_date) #输出2016-05-10 00:13:09.042349
    35 
    36 new_date = datetime.datetime.now() + datetime.timedelta(hours=-10) #比现在减10小时
    37 print(new_date) #输出2016-05-19 14:13:09.042349
    38 
    39 new_date = datetime.datetime.now() + datetime.timedelta(seconds=120) #比现在+120s
    40 print(new_date) #输出2016-05-20 00:15:09.042349
    View Code

     相互转换:

    sys模块

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

     进度条:

    例一: 
    1
    import time 2 import sys 3 4 for i in range(101): 5 #显示进度条百分比 #号从1开始 空格从99递减 6 hashes = '#' * int(i / 100.0 * 100) 7 spaces = ' ' * (100 - len(hashes)) 8 sys.stdout.write(" [%s] %d%%" % (hashes + spaces, i)) 9 sys.stdout.flush() 10 time.sleep(0.05) 11 12 13 14 15 例二: 16 import sys,time 17 18 for i in range(31): 19 sys.stdout.write(' ') #每一次清空原行 20 sys.stdout.write("%s%% |%s" % (int(i/30*100), int(i/30*100)*'*')) 21 sys.stdout.flush() #强行刷新到屏幕 22 time.sleep(0.2)

     序列化

    json 和 pickle

    用于序列化的两个模块

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

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

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

     1 import pickle
     2 data = {'k1':'123','k2':'hello'}
     3 
     4 #pickle.dumps 将数据通过特殊的形式转化为只有python语言认识的字符串
     5 m = pickle.dumps(data)
     6 print(m)
     7 
     8 ##pickle.dump 将数据通过特殊的形式转化为只有python语言认识的字符串,并写入文件
     9 with open('D:/result.pk','w') as fp:
    10     pickle.dump(data,fp)
    11 
    12 import json
    13 #json.dumps 将数据通过特殊的形式转化为所有程序语言都认识的字符串
    14 n = json.dumps(data)
    15 print(n)
    16 
    17 #json.dump 将数据通过特殊的形式转化为所有程序语言都认识的字符串,并写入文件
    18 with open('D:/result.json','w') as fp:
    19     json.dump(data,fp)

     pickle实例:

     1 购物金额操作
     2 #**************
     3 import pickle
     4 
     5 accounts = {
     6     1000: {
     7         'name':'Alex LI',
     8         'email': 'lijie3721@126.com',
     9         'passwd': 'abc123',
    10         'balance': 15000,
    11         'phone': 13651054608,
    12         'bank_acc':{
    13             'ICBC':14324234,
    14             'CBC' : 235234,
    15             'ABC' : 35235423
    16         }
    17     },
    18     1001: {
    19         'name': 'CaiXin Guo',
    20         'email': 'caixin@126.com',
    21         'passwd': 'abc145323',
    22         'balance': -15000,
    23         'phone': 1345635345,
    24         'bank_acc': {
    25             'ICBC': 4334343,
    26         }
    27     },
    28 }
    29 
    30 # print(accounts)
    31 #第一步
    32 f = open('accounts.db','wb')
    33 f.write(pickle.dumps(accounts))
    34 f.close()
    35 
    36 
    37 #**************
    38 import pickle
    39 
    40 #第二步
    41 acc_file_name = "accounts.db"
    42 
    43 account_file = open(acc_file_name,'rb')
    44 
    45 account_dic = pickle.loads(account_file.read())
    46 
    47 account_file.close()
    48 print(account_dic)
    49 
    50 account_dic[1000]['balance'] -= 500
    51 
    52 f = open(acc_file_name,'wb')
    53 f.write(pickle.dumps(account_dic))
    54 f.close()
    55 print(account_dic)
    56 
    57 
    58 #********************
    59 import pickle
    60 #第三步
    61 f = open("accounts.db",'rb')
    62 
    63 account_db = pickle.loads(f.read())
    64 print(account_db)
    View Code

    os模块

    用于提供系统级别的操作

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

    重点掌握的:

    1 os.stat('path/filename')  获取文件/目录信息
    2 
    3 os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
    4 
    5 os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
    6 
    7 os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

    hashlib模块

    加密相关操作

    1 import hashlib
    2 
    3 hash = hashlib.md5(bytes('hjffhash347d2h3s',encoding='utf-8'))
    4 hash.update(bytes('888000',encoding='utf-8'))
    5 print(hash.hexdigest())

    实例:

    mb5加密

     1 import hashlib
     2 def md5(arg):
     3     ooo = hash = hashlib.md5(bytes('hjffhash347d2h3s',encoding='utf-8'))
     4     ooo.update(bytes(arg,encoding='utf-8'))
     5     return ooo.hexdigest()
     6 def login(user,pwd):
     7     with open("db",'r',encoding="utf-8") as f:
     8         for line in f:
     9             u, p = line.strip().split("|")
    10             if u == user and p == md5(pwd):
    11                 return True
    12 def register(user,pwd):
    13     with open("db",'a',encoding="utf-8")as f:
    14         temp =user + "|" + md5(pwd)
    15         f.write(temp)
    16 
    17 i = input("1,登录;2,注册")
    18 if i== "2":
    19     user = input("用户名:")
    20     pwd = input("密码:")
    21     r = login(user, pwd)
    22     if r:
    23         print("登录成功")
    24     else:
    25         print("登录失败")
    View Code

    详细参考:http://www.cnblogs.com/wupeiqi/articles/4963027.html

  • 相关阅读:
    浏览器组成
    Go!!!
    产假计算器地址
    flex 纵向布局,垂直换行,没有撑开父盒子宽度,求解??
    毕业档案
    进程与线程
    事件循环
    回调地狱
    错误优先回调
    组件 v-if 小心哦
  • 原文地址:https://www.cnblogs.com/kongqi816-boke/p/5510706.html
Copyright © 2011-2022 走看看