第一章 为什么要有规范化目录

真正的后端开发的项目,系统等,少则几万行代码,多则十几万,几十万行代码

软件开发,规范你的项目目录结构,代码规范,遵循PEP8规范等等,让你更加清晰,合理开发。

1.代码分类

​ 加载快

​ 可读性高

​ 查询修改方便

第二章 分析规范化目录

1.规划固定的路径

把文件路径换成常量,相当于读取数据库的地址

2.settings.py文件

配置文件

3.src.py主逻辑核心函数文件

4.common.py公共组建部分

5.start.py文件

6.register用户数据相关,多个文件

存放用户用户注册的文件

7.logging日志文件:记录用户的访问次数,用户的动态信息

8.README 记录项目是做什么的

第三章 实战演练

start.py文件

import sys
import os #获取项目的主目录
# BASE_PATH =os.path.dirname(os.path.dirname(__file__))
BASE_PATH= "../../博客园"
sys.path.append(BASE_PATH) from core.src import run
if __name__ == '__main__': run()

settings.py文件

import os
# BASE_PATH = os.path.dirname(os.path.dirname(__file__))
REGISTER_PATH = os.path.join("../", 'db', 'register')
LOG_PATH = os.path.join("../", 'log', 'access.log')

src.py文件

from conf import settings
from lib import common
msg = """
1.请登录
2.请注册
3.进入文章页面
4.进入评论页面
5.进入日记页面
6.进入收藏页面
7.注销账号
8.退出整个程序
>>>
"""
login_dic = {
"username":None,
"flag":False,
"count":3
} def register():
name = input("请输入要注册的用户名")
pwd = input("请输入密码")
with open(settings.REGISTER_PATH, "a", encoding="utf-8") as f:
if name.isalnum() and 6 < len(pwd) < 14:
with open(settings.REGISTER_PATH, "a+", encoding="utf-8") as f:
f.seek(0)
for i in f:
if name in i.strip().split(":"):
print("用户名已存在")
break
else:
print("注册成功")
f.write(f"{name}:{pwd}\n")
else:
print("用户名或密码输入格式错误!")
return f"{name}" def login(func=False):
while login_dic["count"]:
user = input("username:")
pwd = input("password:")
with open(settings.REGISTER_PATH, "r", encoding="utf-8") as u:
for i in u:
k, v = i.strip().split(":")
if user == k and pwd == v:
login_dic["username"] = user
login_dic["flag"] = True
login_dic["count"] = 0
print("登录成功!") if func:
func()
else:
login_dic["count"] -= 1
print(f"用户名或密码错误!剩余次数{login_dic['count']}")
common.logger.warning('logger warning message')
@common.auth
def article():
print("这是文章") @common.auth
def comment():
print("这是评论") @common.auth
def log():
print("这是日记") @common.auth
def collect():
print("这是收藏") @common.auth
def out():
login_dic["username"] = None
login_dic["flag"] = False
print("退出成功!") func_dic = {
"1":login,
"2":register,
"3":article,
"4":comment,
"5":log,
"6":collect,
"7":out,
"8":exit,
} def run():
while True:
chose = input(msg)
if chose in func_dic:
login_dic["count"] = 3
func_dic[chose]()
else:
print("请正确输入内容!")

common.py

from core import src
from conf import settings
def auth(func):
def inner(*args,**kwargs):
if src.login_dic["flag"]:
func()
else:
src.login(func) return inner
import logging
logger = logging.getLogger()
# 创建一个logger
fh = logging.FileHandler(settings.LOG_PATH,mode="a",encoding='utf-8') # 文件
ch = logging.StreamHandler() # 屏幕
formatter = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - [line:%(lineno)d] - %(levelname)s - %(message)s')
# 将屏幕和文件都是用以上格式
logger.setLevel(logging.DEBUG)
# 设置记录级别
fh.setFormatter(formatter)
# 使用自定义的格式化内容
ch.setFormatter(formatter)
logger.addHandler(fh) #logger对象可以添加多个fh和ch对象
logger.addHandler(ch) #打印在屏幕上

python之代码规范的更多相关文章

  1. Python pep8代码规范

    title: Python pep8代码规范 tags: Python --- 介绍(Introduction) 官方文档:PEP 8 -- Style Guide for Python Code 很 ...

  2. python PEP8代码规范及问题

    最近刚刚接触Python,为了养成好习惯,尽量保证自己写的代码符合PEP8代码规范,下面是过程中报出的警告及解决方法,英文有些翻译不太准确见谅,会不断更新: PEP 8: module level i ...

  3. python初学者-代码规范

    一.编程规范 1.缩进(代码块) 类定义.函数定义.选择结构.循环结构.with块.行尾的冒号表示缩进的开始. python程序是依靠代码块的缩进来体现代码之间的逻辑关系,缩进结束就表示一个代码块结束 ...

  4. 老李分享:pep8 python代码规范

    老李分享:pep8 python代码规范 什么是PEPPEP是 Python Enhancement Proposal 的缩写,翻译过来就是 Python增强建议书 . PEP8 译者:本文基于 20 ...

  5. python代码规范与标准库参考

    python代码规范与标准库参考 python代码规范参考文献: http://www.runoob.com/w3cnote/google-python-styleguide.html https:/ ...

  6. Python代码规范之---代码不规范,亲人两行泪

    任何语言的程序员,编写出符合规范的代码,是开始程序生涯的第一步! 关于代码规范 Python 官方提供有一系列 PEP(Python Enhancement Proposals) 文档 其中第 8 篇 ...

  7. Python代码规范(PEP8)问题及解决

    转载:https://blog.csdn.net/Jason_Lewis/article/details/75386598 最近刚刚接触Python,为了养成好习惯,尽量保证自己写的代码符合PEP8代 ...

  8. python基础1 - 多文件项目和代码规范

    1. 多文件项目演练 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件 –  一个项目通常会包含 很多源文件 在 ...

  9. python代码规范 自动优化工具Black

    自动优化工具Black 在众多代码格式化工具中,Black算是比较新的一个,它***的特点是可配置项比较少,个人认为这对于新手来说是件好事,因为我们不必过多考虑如何设置Black,让 Black 自己 ...

随机推荐

  1. Confluence 6 图片文件

    当你对一个页面进行编辑的时候,选择一个图片,将会显示图片属性面板.这个面板允许你设置显示大小,添加边控和特效和链接这个图片到其他页面. 从图片的属性面板,你可以: 为以图片选择一个 显示大小(pres ...

  2. Travis CI eval ./gradlew assemble 错误

    问题 在进行 Travis CI 进行集成编译的时候出现错误. <-------------> 0% WAITINGThe command "eval ./gradlew ass ...

  3. 手动升级 Confluence - 开始升级之前

    在本指南中,我们将会帮助你使用 zip / tar.gz 文件将你的 Confluence 安装实例在 Windows 或者 Linux 版本中升级到最新的版本. 升级到任何最新的版本都是免费的,如果 ...

  4. selenium实现chrome分屏截图的合并

    selenium的截图功能在chrome下无法实现,但是可以操作滚动条来一屏一屏的截图,然后再合并成一张图,合并图片的代码在网上找的,十分感谢那位朋友,具体解决方案如下:直接上代码: def capt ...

  5. 在vue项目中添加一个html页面,开启本地服务器

    在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...

  6. supsplk 服务器被植入木马 挖矿 cpu使用 700%

    最近emr集群跑任务的时候总出现 task failed ,优化sql,调提交任务参数都没解决,最后再我排查时候,发现一个从节点的cpu使用800% 经过一些列排查,发现是被注入木马了, #被人种下的 ...

  7. 拉格朗日插值法板子(dls)

    namespace polysum { ; ll a[D],f[D],g[D],p[D],p1[D],p2[D],b[D],h[D][],C[D]; ll calcn(int d,ll *a,ll n ...

  8. jquery 动态增加删除行

    最近写程序,碰巧有动态增加删除行,下面就记录一下 html就不写了,也没有什么,直接上核心了 新增行 function addRow(obj){ //获得table一共有多少行,方便追加的时候给序号赋 ...

  9. LeetCode 43. 字符串相乘(Multiply Strings) 大数乘法

    题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2" ...

  10. typescript 接口 interface

    代码: // 接口:行为的抽象 // 一.对class类的约束 // 接口定义 // 打印机 interface Iprinter { Printing(msg:string):string; } i ...