python常用模块练习题

练习题

1.logging模块有几个日志级别?

logging的日志可以分为 debug(), info(), warning(), error() and critical()5个级别

debug()调试模式,日志很详细

info()提示

warning()有潜在的问题

error()出问题了

critical()严重问题


2.请配置logging模块,使其在屏幕和文件里同时打印以下格式的日志

2017-10-18 15:56:26,613 - access - ERROR - account [1234] too many login attempts

import logging

# 1.生成logger对象

logger = logging.getLogger()

logger.setLevel(logging.DEBUG)# 设置全局

# 2.生成handler对象

ch = logging.StreamHandler()

ch.setLevel(logging.INFO)# 设置局部

fh = logging.FileHandler("example.log")

# 2.1把 handler对象绑定到logger

logger.addHandler(ch)

logger.addHandler(fh)

# 3.生成formatter对象

# 3.1把formatter对象绑定handler对象

file_formatter = logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(threadName)s[%(thread)d]%(message)s")

console_formatter= logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(threadName)s[%(thread)d]%(message)s")

ch.setFormatter(file_formatter)

fh.setFormatter(console_formatter)

logging.debug("too many login attempts")

logging.info("too many login attempts")

logging.error("too many login attempts")

logging.critical("too many login attempts")

3.json、pickle、shelve三个区别是什么?

JSON:

优点:跨语言、体积小

缺点:只支持int\str\list\tuple\dict

Pickle:

优点:专为python设计,支持Python所有的数据类型

缺点:只能在Python中使用,存储数据占空间大

json和pickle的模块只允许dump和load一次,而shelve可以支持多次。

shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

4.json的作用是什么?

json,用于字符串和Python数据类型间进行转换

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

(A)简化用JavaScript定义对象的方式

(B)也能用在AJAX中,做为数据载体之一

1.JSON应用场景

web客户端和服务器通过AJAX(HTTP REQUEST)进行数据交换,而JSON是AJAX中最常用的数据格式。

2.JSON简介和语法

(1)概念:JSON:JavaScript对象表示法,是一种完全独立与语言的文本格式

(2)语法:数据由逗号分隔,{}保存对象,【】保存数组

3.JSON语法检测工具:BE JSON,JSON.cn

4.JSON与JavaScript对象的区别

1.JSON是从JavaScript对象中演变出来的,是JavaScript的一个子集

  2.表面上,可以看作使用“”引起的是JSON

5.JSON在HTTP请求中的作用

1.HTTP协议采用了请求/响应模型,即客户端发出请求,服务器端给予相应

2.传输过程包括message-header和message-body两部分

3.message-body是传输的具体信息

4.message-header,用来设置HTTP的一些信息

6.HTTP Header信息

1.HTTP Header是HTTP请求和响应的核心

2.包含许多有关的客户端环境和请求正文的有用信息

---------------------

作者:ZhzetFor

来源:CSDN

原文:https://blog.csdn.net/qq_32631151/article/details/79085527

5.subprocess执行命令方法有几种?

三种执行命令的方法

subprocess.run(*popenargs, input=None, timeout=None, check=False, **kwargs) #官方推荐

subprocess.call(*popenargs, timeout=None, **kwargs) #跟上面实现的内容差不多,另一种写法

subprocess.Popen() #上面各种方法的底层封装


6.为什么要设计好目录结构?

我们设计一个层次清晰的目录结构,就是为了达到以下两点:

1.可读性高:不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本在哪,测试目录在哪儿。这个歌=好处是,随着时间的推移,代码、配置的规模增加,项目结构不会混乱,仍然能够阻止良好。

2.可维护性高:定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码、配置的规模增加,项目结构不会混乱,仍然能够阻止良好。

7.打印出命令行的第一个参数。例如:

python argument.py luffy

打印出 luffy




8.代码如下:

'''

Linux当前目录/usr/local/nginx/html/

文件名:index.html

'''

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(index.html)))

print(BASE_DIR)

打印的内容是什么?

os.path.dirname和os.path.abspath含义是什么?




9.通过configparser模块完成以下功能

文件名my.cnf

[DEFAULT]

[client]

port = 3306

socket = /data/mysql_3306/mysql.sock

[mysqld]

explicit_defaults_for_timestamp = true

port = 3306

socket = /data/mysql_3306/mysql.sock

back_log = 80

basedir = /usr/local/mysql

tmpdir = /tmp

datadir = /data/mysql_3306

default-time-zone = '+8:00'

修改时区 default-time-zone = '+8:00' 为 校准的全球时间 +00:00

删除 explicit_defaults_for_timestamp = true

为DEFAULT增加一条 character-set-server = utf8


import configparser

config = configparser.ConfigParser()# 一个对象

config.sections()

config.read("conf.ini")

config['mysqld']['default-time-zone'] ='+00:00'    # 修改

config.remove_option("mysqld","explicit_defaults_for_timestamp")# 删除

config["DEFAULT"]["character-set-server"]="utf-8"    #增加一条

config.write(open("conf.ini","w"))# 写回文件


10.写一个6位随机验证码程序(使用random模块),要求验证码中至少包含一个数字、一个小写字母、一个大写字母.

import random

import string

d = random.sample(string.ascii_letters+string.digits,3)

d.append(random.choice(string.ascii_lowercase))

d.append(random.choice(string.ascii_uppercase))

d.append(random.choice(string.digits))

random.shuffle(d)

print("".join(d))


11.利用正则表达式提取到 luffycity.com ,内容如下

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>luffycity.com</title>

</head>

<body>

</body>

</html>



12.写一个用户登录验证程序,文件如下

1234.json

{"expire_date": "2021-01-01", "id": 1234, "status": 0, "pay_day": 22, "password": "abc"}

用户名为json文件名,密码为 password。

判断是否过期,与expire_date进行对比。

登陆成功后,打印“登陆成功”,三次登陆失败,status值改为1,并且锁定账号。


答:已经做出,略,用到json,os,time模块


13.把第12题三次验证的密码进行hashlib加密处理。即:json文件保存为md5的值,然后用md5的值进行验证。



14.最近luffy买了个tesla,通过转账的形式,并且支付了5%的手续费,tesla价格为75万。文件为json,请用程序实现该转账行为。

需求如下:

目录结构为

.

├── account

│  ├── luffy.json

│  └── tesla.json

└── bin

      └── start.py

当执行start.py时,出现交互窗口

  ------- Luffy Bank ---------

  1.  账户信息

  2.  转账

选择1 账户信息 显示luffy的当前账户余额。

选择2 转账 直接扣掉75万和利息费用并且tesla账户增加75万


15.对上题增加一个需求:提现。

目录结构如下

.

├── account

│  └── luffy.json

├── bin

│  └── start.py

└── core

  └── withdraw.py

当执行start.py时,出现交互窗口

  ------- Luffy Bank ---------

1.  账户信息

2.  提现

选择1 账户信息 显示luffy的当前账户余额和信用额度。

选择2 提现 提现金额应小于等于信用额度,利息为5%,提现金额为用户自定义。


16.尝试把上一章的验证用户登陆的装饰器添加到提现和转账的功能上。


17.对第15题的用户转账、登录、提现操作均通过logging模块记录日志,日志文件位置如下

.

├── account

│  └── luffy.json

├── bin

│  └── start.py

└── core

|  └── withdraw.py

└── logs

    └── bank.log

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • 模块和包 一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是...
    go以恒阅读 2,259评论 0 4
  • 常用模块 认识模块 什么是模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文...
    go以恒阅读 1,917评论 0 6
  • 常用模块学习 什么是模块? 为了维护代码 提高代码的可维护性; 使用模块可以避免函数名和变量名冲突; 可重用 模块...
    drfung阅读 679评论 1 1
  • logging介绍Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块...
    modingfa阅读 6,799评论 0 2
  • 我把我整个灵魂都给你 连同它的怪癖 耍小脾气 忽明忽暗 一千八百种坏毛病 它真讨厌 只有一点好 爱你
    TZang阅读 130评论 0 0