python博客园示例,重点使用装饰器

# -*- coding:utf-8 -*-
import time

login_state = False
user_dict = {'username': None}

def register():  # 注册函数
    while True:
        username = input("请输入注册账号:").strip()
        password = input("请输入注册密码:").strip()
        with open("register", encoding="UTF-8")as reg:
            for i in reg:
                list_reg = i.strip().split(',')
                if username == list_reg[0]:
                    print("用户名已经存在,请重新输入")
                    break
            else:
                with open("register", encoding="UTF-8", mode="a")as ligo:
                    ligo.write('\n{},{}'.format(username, password))
                    print("注册成功")
                    return True

def login():  # 登陆函数
    global login_state
    global user_dict
    i = 0  # 计数器
    while i < 3:  # 超过3次后,登陆失败
        username = input("请输入您的账号:").strip()
        password = input("请输入您的密码:").strip()  # 去除空格及换号符
        with open('register', encoding='UTF-8')as f1:
            for line in f1:  # 循环读取注册文件中的内容
                line_list = line.strip().split(',')
                if username == line_list[0] and password == line_list[1]:
                    print("*******登陆成功*******")
                    login_state = True
                    user_dict = line_list[0]
                    return True
            else:
                print("账户或密码输入错误")
            i += 1

def log(e):
    def loge():
        log_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        with open("log", encoding="UTF-8", mode="a") as logg:
            logg.write('\n{},{}登陆了,执行了{}函数'.format(log_time, user_dict, e.__name__))
        e()

return loge

def jian_ce(f):  # 认证函数,检测用户是否登陆
    def inner():
        global login_state
        if login_state == False:
            print("您尚未登陆,请先登陆后在执行程序")
            login()
        else:
            f()

return inner

def logoff():  # 注销函数
    global login_state
    if login_state == True:
        login_state = False
        print("注销成功")
        return login_state
    else:
        print("您尚未登陆,不需要注销")

@jian_ce  # 语法糖,装饰器
@log
def wen_zhang():
    print("这是文章页面")

@jian_ce  # 语法糖,装饰器
@log
def ri_ji():
    print("这是日记页面")

@jian_ce  # 语法糖,装饰器
@log
def ping_lun():
    print("这是评论页面")

@jian_ce  # 语法糖,装饰器
@log
def shou_cang():
    print("这是收藏页面")

xu_dict = {  # 定义了一个字典,存放序列号对应函数
    1: login,
    2: register,
    3: wen_zhang,
    4: ri_ji,
    5: ping_lun,
    6: shou_cang,
    7: logoff
}
while True:
    print('''-------欢迎来到博客园-------
        1:请登陆
        2:请注册
        3:文章页面
        4:日记页面
        5:评论页面
        6:收藏页面
        7:注销
        8:退出程序
        ''')
    xu_hao = input("请输入序列号:").strip()
    if xu_hao.isdigit():
        xu_hao = int(xu_hao)
        if xu_hao > 0 and xu_hao <= len(xu_dict):
            xu_dict[xu_hao]()
        elif xu_hao == 8:
            break
            print("再见!退出程序成功")
        else:
            print("你输入的序号不存在")
    else:
        print("您输入的序列号存在非法字符")

原文地址:http://blog.51cto.com/11258494/2122229

时间: 2024-10-01 02:35:17

python博客园示例,重点使用装饰器的相关文章

【被玩坏的博客园】之canvas装饰博客园侧边栏

最近抽空学了学canvas,然后用canvas做了个小球运动的demo,大致的效果如下: 虽然网上已经有很多这样的demo,但是还是想根据自己的思路来写一个,下面先跟大家讲解一下源代码,先看html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content=&q

玩坏的博客园】之canvas装饰博客园侧边栏

最近抽空学了学canvas,然后用canvas做了个小球运动的demo,大致的效果如下: 虽然网上已经有很多这样的demo,但是还是想根据自己的思路来写一个,下面先跟大家讲解一下源代码,先看html代码: html很简单,没啥讲的,就是css那块 http://p.baidu.com/itopic/main/qlog?qid=88496162633461303933633700&type=questionloghttp://p.baidu.com/itopic/main/qlog?qid=894

通过Word 发布博客至wordpress或者博客园

打开word,点击文件->共享->发布至博客 选择个人博客类型,如果没有该类型,选择其他即可,填写个人博客相关信息如下图: 博客园示例 WordPress 示例 图片选项选择我的博客提供商即可 完成后确定. 此时可以编写自己的博客完成后点击发布即可同步到相应的博客网站,也可以通过管理账户来添加新的博客站点.发布成功截图如下 具体操作参考地址:https://support.office.com/zh-cn/article/%e6%9c%89%e5%85%b3%e5%9c%a8-word-%e4

python数据挖掘领域工具包 - wentingtu - 博客园

python数据挖掘领域工具包 - wentingtu - 博客园 python数据挖掘领域工具包 原文:http://qxde01.blog.163.com/blog/static/67335744201368101922991/ Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: 比较成熟的(广播)函数库: 用于整合C/C++和Fortran代码的工具包: 实用的线性代数.傅

Python爬虫入门教程:博客园首页推荐博客排行的秘密

1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首页的推荐博客排行时,心里痒痒的,想想看看这些大佬究竟是写了什么文章这么受欢迎,可以被推荐.所以用Python抓取了这100位推荐博客,简单分析了每个博客的文章分类,阅读排行榜,评论排行榜及推荐排行榜,最后统计汇总并生成词云.正好这也算是一篇非常好的Python爬虫入门教程了. 2. 环境准备 2.1

在Python中用Request库模拟登录(二):博客园(简单加密,无验证码)

源代码分析 博客园的登录页面非常简单,查看网页源代码,可以发现两个输入框的id分别为input1.input2,复选框的id为remember_me,登录按钮的id为signin. 还有一段JavaScript代码,下面来简单分析一下. 先来看$(function(){});函数: 1 $(function () { 2 $('#signin').bind('click', function () { 3 signin_go(); 4 }).val('登 录'); 5 }); $(functio

python爬虫:两种方法模拟登录博客园

第一方法用第三方库(requests):参考http://www.mamicode.com/info-detail-1839685.html 源代码分析 博客园的登录页面非常简单,查看网页源代码,可以发现两个输入框的id分别为input1.input2,复选框的id为remember_me,登录按钮的id为signin. 还有一段JavaScript代码,下面来简单分析一下. 先来看$(function(){});函数: 1 $(function () { 2 $('#signin').bind

Python+webdriver爬取博客园“我的闪存”并保存到本地

前篇 用webdriver+phantomjs实现无浏览器的自动化过程 本篇 想法与实现 我想要将博客园“我的闪存”部分内容爬取备份到本地文件,用到了WebDriver和Phantomjs的无界面浏览器.对于xpath的获取与校验需要用到firefox浏览器,安装firebug和firepath插件.代码如下: # -*- coding: utf-8 -*- import os,time from selenium import webdriver from selenium.webdriver

Python - 爬取博客园某一目录下的随笔 - 保存为docx

1 #coding:utf-8 2 import requests 3 from bs4 import BeautifulSoup 4 import MySQLdb 5 6 7 def get_html(url): 8 ''' 9 获取页面HTML源码,并返回 10 ''' 11 html = requests.get(url) 12 content = html.text.encode('utf-8') 13 return content 14 15 def get_blog_html_lis