python第十五天

python第十五天

今日内容

  • 常用模块的介绍:
    time,datetime
    os,sys
    hashlib,json,pickle,collections

time:和时间相关

  • 封装了获取时间戳和字符串形式的时间的一些方法。
    time.time():获取时间戳
    time.gmtime([seconds]):获取格式化时间对象:是九个字段组成的
    time.localtime([seconds]):获取格式化时间对象:是九个字段组成的
    time.mktime(t):时间对象 -> 时间戳
    time.strftime(format[,t]):把时间对象格式化成字符串
    time.strptime(str,format):把时间字符串转换成时间对象
import time
# 获取时间戳
# 时间戳:从时间元年(1970 1 1 00:00:00)到现在经过的秒数。
# print(time.time()) # 1558314075.7787385  1558314397.275036
# 获取格式化时间对象:是九个字段组成的。
# 默认参数是当前系统时间的时间戳。
# print(time.gmtime()) # GMT:
# print(time.localtime())
# print(time.gmtime(1))    # 时间元年过一秒后,对应的时间对象
# 时间对象 -> 时间戳
# t1 = time.localtime()  # 时间对象
# t2 = time.mktime(t1)  # 获取对应的时间戳
# print(t2)
# print(time.time())
# 格式化时间对象和字符串之间的转换
# s = time.strftime("year:%Y %m %d %H:%M:%S")
# print(s)
# 把时间字符串转换成时间对象
# time_obj = time.strptime('2010 10 10','%Y %m %d')
# print(time_obj)

datetime:日期时间相关

  • 包含了和日期时间相关的类.主要有:
    date:需要年,月,日三个参数
    time:需要时,分,秒三个参数
    datetime:需要年,月,日,时,分,秒六个参数.
    timedelta:需要一个时间段.可以是天,秒,微秒.
    获取以上类型的对象,主要作用是和时间段进行数学运算.
    timedelta可以和以下三个类进行数学运算:
    datetime.time,datetime.datetime,datetime.timedelta
    练习:
    显示当前日期前三天是什么时间.
    显示任意一年的二月份有多少天.
# 普通算法:根据年份计算是否是闰年.是:29天,否:28
# 用datetime模块.
# 首先创建出指定年份的3月1号.然后让它往前走一天.
year = int(input("输入年份:"))
# 创建指定年份的date对象
d = datetime.date(year,3,1)
# 创建一天 的时间段
td = datetime.timedelta(days=1)
res = d - td
print(res.day)

os模块

  • 和操作系统相关的模块,主要是文件删除,目录删除,重命名等操作.
import os
# 和文件操作相关,重命名,删除
# os.remove('a.txt')
# os.rename('a.txt','b.txt')
# 删除目录,必须是空目录
# os.removedirs('aa')
# 使用shutil模块可以删除带内容的目录
# import shutil
# shutil.rmtree('aa')
# 和路径相关的操作,被封装到另一个子模块中:os.path
# res = os.path.dirname(r'd:/aaa/bbb/ccc/a.txt') # 不判断路径是否存在.
# print(res)
#
# # 获取文件名
# res = os.path.basename(r'd:/aaa/bbb/ccc/a.txt')
# print(res)
# 把路径中的路径名和文件名切分开,结果是元组.
# res = os.path.split(r'd:/aaa/bbb/ccc/a.txt')
# print(res)
# 拼接路径
# path = os.path.join('d:\\','aaa','bbb','ccc','a.txt')
# print(path)
# 如果是/开头的路径,默认是在当前盘符下.
# res = os.path.abspath(r'/a/b/c')
# 如果不是以/开头,默认当前路径
# res = os.path.abspath(r'a/b/c')
# print(res)
# 判断
# print(os.path.isabs('a.txt'))
# print(os.path.isdir('d:/aaaa.txt')) # 文件不存在.False
# print(os.path.exists('d:/a.txt'))
# print(os.path.isfile('d:/asssss.txt'))   # 文件不存在.False

sys模块

  • 和解释器操作相关的模块.
    主要两个方面:
    解释器执行时获取参数:sys.argv[x]
    解释器执行时寻找模块的路径:sys.path
    例如:有a.py内容如下:
import sys
print('脚本名称:',sys.argv[0])
print('第一个参数:',sys.argv[1])
print('第二个参数:',sys.argv[2])

使用脚本方式运行:

python a.py hello world

json模块

  • JavaScript Object Notation:java脚本兑现标记语言.
    已经成为一种简单的数据交换格式.
    序列化:将其他数据格式转换成json字符串的过程.
    反序列化:将json字符串转换其他数据类型的过程.

    • 涉及到的方法:
      json.dumps(obj):将obj转换成json字符串返回到内存中.
      json.dump(obj,fp):将obj转换成json字符串并保存在fp指向的文件中.
      json.loads(s):将内存中的json字符串转换成对应的数据类型对象
      json.load(f):从文件中读取json字符串,并转换回原来的数据类型.

      • 注意:
        json并不能序列化所有的数据类型:例如:set.
        元组数据类型经过json序列化后,变成列表数据类型.
        json文件通常是一次性写入,一次性读取.但是可以利用文件本身的方式实现:一行存储一个序列化json字符串,
        在反序列化时,按行反序列化即可.

pickle模块

  • python专用的序列化模块.
    和json的方法一致.
  • 区别
  • json:
    1.不是所有的数据类型都可以序列化.结果是字符串.
    2.不能多次对同一个文件序列化.
    3.json数据可以跨语言
    pickle:
    1.所有python类型都能序列化,结果是字节串.
    2.可以多次对同一个文件序列化
    3.不能跨语言.

hashlib模块

  • 封装一些用于加密的类.
    md5(),...
    加密的目的:用于判断和验证,而并非解密.
    特点:
    把一个大的数据,切分成不同块,分别对不同的块进行加密,再汇总的结果,和直接对整体数据加密的结果是一致
    的.
    单向加密,不可逆.
    原始数据的一点小的变化,将导致结果的非常大的差异,‘雪崩‘效应.
# 注册,登录程序:
def get_md5(username,passwd):
  m = hashlib.md5()
  m.update(username.encode('utf-8'))
  m.update(passwd.encode('utf-8'))
  return m.hexdigest()
def register(username,passwd):
  # 加密
  res = get_md5(username,passwd)
  # 写入文件
  with open('login',mode='at',encoding='utf-8') as f:
    f.write(res)
    f.write('\n')
def login(username,passwd):
  # 获取当前登录信息的加密结果
  res = get_md5(username, passwd)
  # 读文件,和其中的数据进行对比
  with open('login',mode='rt',encoding='utf-8') as f:
    for line in f:
      if res == line.strip():
        return True
    else:
      return False
while True:
  op = int(input("1.注册 2.登录 3.退出"))
  if op == 3 :
    break
  elif op == 1:
    username = input("输入用户名:")
    passwd = input("输入密码:")
    register(username,passwd)
  elif op == 2:
    username = input("输入用户名:")
    passwd = input("输入密码:")
    res = login(username,passwd)
    if res:
      print('登录成功')
    else:
      print('登录失败')

不同的加密对象,结果长度不同,长度越长,越耗时.常用的是md5.

原文地址:https://www.cnblogs.com/styxr/p/12175335.html

时间: 2024-10-15 19:46:06

python第十五天的相关文章

python学习十五天

内置函数二 1.lamda匿名函数 2. sorted() 3. filter() 4. map() 5. 递归函数 一. lamda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): eturn n**n print(func(10)) f = lambda n: n**n print(f(10)) lambda表示的是匿匿名函数. 不需要用def来声明, 一句句话就可以声明出一个函数 语法: 函数名 = lambda 参数: 返回值 注意: 1.

selenium python (十五)控制滚动条操作

#!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #一般用到操作滚动条的两个场景    #注册时的法律条文的阅读,判断用户是否阅读完成的标准是:滚动条是否拉到最下方    #要操作的页面元素不在视觉范围,无法进行操作,需要拖动滚动条    #用于标识滚动条位置的代码        #<body >        #<body > from selenium import webdriverimport 

Python学习十五:sorted()

sorted()是Python内置的一个高阶函数,可以实现对list的排序,它还可以接收一个比较函数来实现自定义的排序. 现在有一个list : [36, 5, 12, 9, 21] 我们分别对这个list进行如下操作: 1.对list进行排序,使用sorted直接排序即可: print sorted([36, 5, 12, 9, 21]) 2.对list进行倒序排序,可以自定一个方法: def reversed_cmp(x, y): if x > y: return -1 if x < y:

笨办法学Python(十五)

习题 15: 读取文件 你已经学过了 raw_input 和 argv,这些是你开始学习读取文件的必备基础.你可能需要多多实验才能明白它的工作原理,所以你要细心做练习,并且仔细检查结果.处理文件需要非常仔细,如果不仔细的话,你可能会吧有用的文件弄坏或者清空.导致前功尽弃. 这节练习涉及到写两个文件.一个正常的 ex15.py 文件,另外一个是 ex15_sample.txt,第二个文件并不是脚本,而是供你的脚本读取的文本文件.以下是后者的内容: 1 This is stuff I typed i

python第九十五天--js正则

定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m 表示多行匹配 JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容) var pattern = /^Java\w*/gm; var text = "JavaScript is more fun than \nJavaEE or JavaBeans!"; result = pattern.exec(text) re

python第十五天-原来还差一份作业

作业 1: 员工信息表程序,实现增删改查操作 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select * from staff_table where dept = "IT" select * from staff_table where enroll_date like "2013"查到的信息,打印后,最后面还要显示查到的条数 可创建新员工纪录,以phone做唯一键

Python爬虫(十五)_案例:使用bs4的爬虫

本章将从Python案例讲起:所使用bs4做一个简单的爬虫案例,更多内容请参考:Python学习指南 案例:使用BeautifulSoup的爬虫 我们已腾讯社招页面来做演示:http://hr.tencent.com/position.php?&start=10#a 使用BeautifulSoup4解析器,将招聘网页上的职位名称.职位类别.招聘人数.工作地点.时间.以及每个职位详情的点击链接存储出来. #-*- coding:utf-8 -*- from bs4 import Beautiful

初雪python第十五天的随堂笔记

句柄 f = open('1234567',encoding='utf-8') print(f) <_io.TextIOWrapper name='1234567' mode='r' encoding='utf-8'> f 就是一个文件句柄 handler , 文件操作符 , 文件句柄 内置函数 dir()                             查看一个变量拥有的方法 l = [] print(dir(l)) ['__add__', '__class__', '__conta

流畅的python第十五章上下文管理器和else块学习记录

with 语句和上下文管理器for.while 和 try 语句的 else 子句 with 语句会设置一个临时的上下文,交给上下文管理器对象控制,并且负责清理上下文.这么做能避免错误并减少样板代码,因此 API 更安全,而且更易于使用.除了自动关闭文件之外,with 块还有很多用途 else 子句不仅能在 if 语句中使用,还能在 for.while 和 try 语句中使用 for 仅当 for 循环运行完毕时(即 for 循环没有被 break 语句中止)才运行 else 块.while 仅