一. 目录规范.

1. 文件夹的规范写法:

  bin  (可执行文件)

  conf  (配置文件)

  core  (主要业务逻辑)

  db     (数据文件)

  lib      (库,(公共代码  第三方模块))

  log      (日志文件)

  readme   (说明文档. 也是一个文件)

  在以上文件夹中 没有需要作为包的, 你的包通常放到 lib中, 但是注意 lib不应该作为包

    疑惑?

     这个文件夹到底应该是包还是文件夹, 其实问题就是需要不需要用到 init

     init的作用就是导入包内模块中的全部功能

     通过判断是不是需要这个功能来判断是包还是文件夹

 

2.定制程序的入口:

  # 总结 程序的入口 主要是将项目的根目录添加到环境变量中.

 

3.分文件夹之后的模块使用

start.py (执行文件)

import sys,os
# sys.path.append(r"D:\上海python全栈4期\day19")
# __file__ 得到的是当前文件的完整路径
print(__file__)
# dirname 得到一个路径的所在目录
print(os.path.dirname(__file__))
# 我们要的是day19 所以再取一次
print(os.path.dirname(os.path.dirname(__file__)))
# 项目的根目录
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# 将得到的结果 添加到环境变量中
sys.path.append(BASE_DIR)

# 导入ATM
import core.ATM
# 执行启动函数
core.ATM.run()



settings.py文件 (里面存着一些变量,或工具)

DB_PATH = r"D:\上海python全栈4期\day19\db\高根db.txt"
LOG_PATH = r"D:\上海python全栈4期\day19\log\log.txt"


DB_URL = "127.0.0.1"
USER = "root"
PWD = "123"




ATM.py (主要的业务逻辑)

 

from conf.settings import *
from lib.common import *
def login():
print("登录")
name = "xx"
pwd = "xx"
with open(DB_PATH,encoding="utf-8") as f:
print(f.read())
logger("%s登录成功" % name)

def register():
print("注册")
with open(DB_PATH, encoding="utf-8") as f:
print(f.read())

def shopping():
print("购物")
if not login_auth():
return
with open(DB_PATH, encoding="utf-8") as f:
print(f.read())


def run():
print("欢迎使用!")
while True:
print("""1.登录
2.注册
3.购物""")
s = input("请选择:")
if s == "1":
login()
elif s == "2":
register()
elif s == "3":
shopping()
else:
print("输入错误!")
run()

 

 

common.py( 主要存储第三方模块.或公共代码)from conf.settings importdef login_auth():

    print("登录验证")

def logger(msg):
with open(LOG_PATH,"at",encoding="utf-8") as f:
f.write(msg+"\n")



二. 常用的内置模块:

1. time

import time
#与时间相关的一个模块

#时间的三类:
# 1.时间戳 从1970年的一月一日 8:0:0 开始到现在的秒数
  print(time.time())
  t = time.time
  time.sleep(10)
  #让程序睡上10秒
  t2 = time.time
  print(t2-t)
  #现在减去刚才的时间



#2.结构化时间
  print(time.localtime()) #返回一个对象,其中包含一个元组 里面是每个时间的值 (东八区.北京时间)

  print(time.localtime().tm_year (#年)) #单独获取某个时间属性

  print(time.gmtime()) # 世界统一时间. 比北京时间晚了八个小时



#3.格式化的字符串时间

  print(time.strftime('%Y-%m-%D %H:%M:%S %p(上午时间)'))

  print(time.strftime('%Y-%m-%D %X(代表时分秒) %p'))


#4.三种格式之间的互相转换

  #时间戳转为结构化
  print(time.localtime(time.time()))

  #结构化转字符串
  print(time.strftime('%Y-%m-%d',time.localtime(time.time())))

  #字符串转为结构化
  print(time.strftime('2018-10-15','%Y-%m-%d'))

  #结构化转时间戳
  print(time.mktime(time.strftime('2018-10-15','%Y-%m-%d')))

  #
了解. 格林威治时间
  print(time.asctime(time.localtime(60*60*24)))
  print(time.ctime(60*60*24))



2. datetime

import datetime

  #这个是一个包 里面包含 对时间的处理. 对日期的处理
  datetime.date #日期相关
  
  datetime.time #时间相关


  # 获取当前详细时间
  print(datetime.datetime.now())

  
  # 获取时间的某一部分
  print(datetime.datetime.now().hour)


  #替换时间的某一部分
  ti = datetime.datetime.now()
  t1 = t1.replace(year=2019)
  print(t1)


  #
了解 时间差对象
  tal = datetime.datetime(weeks=1)
  
  t1 = datetime.datetime.now()
  
  print(t1 + tal)










posted on 2018-10-15 16:43  海贼王。  阅读(155)  评论(0编辑  收藏  举报