目錄
一、軟件開發的目錄規范
為了提高程序的可讀性與可維護性,我們應該為軟件設計良好的目錄結構,這與規范的編碼風格同等重要,簡而言之就是把軟件代碼分文件目錄。假設你要寫一個ATM軟件,你可以按照下面的目錄結構管理你的軟件代碼:
ATM/
|-- core/
| |-- src.py # 業務核心邏輯代碼
|
|-- api/
| |-- api.py # 接口文件
|
|-- db/
| |-- db_handle.py # 操作數據文件
| |-- db.txt # 存儲數據文件
|
|-- lib/
| |-- common.py # 共享功能
|
|-- conf/
| |-- settings.py # 配置相關
|
|-- bin/
| |-- run.py # 程序的啟動文件,一般放在項目的根目錄下,因為在運行時會默認將運行文件所在的文件夾作為sys.path的第一個路徑,這樣就省去了處理環境變量的步驟
|
|-- log/
| |-- log.log # 日志文件
|
|-- requirements.txt # 存放軟件依賴的外部Python包列表,詳見https://pip.readthedocs.io/en/1.1/requirements.html
|-- README # 項目說明文件
# run.py
import sys
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from core import src
if __name__ == '__main__':
src.run()
# settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DB_PATH = os.path.join(BASE_DIR, 'db', 'db.txt')
LOG_PATH = os.path.join(BASE_DIR, 'log', 'user.log')
# print(DB_PATH)
# print(LOG_PATH)
# src.py
from conf import settings
from lib import common
def login():
print('登陸')
def register():
print('注冊')
name = input('username>>: ')
pwd = input('password>>: ')
with open(settings.DB_PATH, mode='a', encoding='utf-8') as f:
f.write('%s:%s\n' % (name, pwd))
# 記錄日志。。。。。。
common.logger('%s注冊成功' % name)
print('注冊成功')
def shopping():
print('購物')
def pay():
print('支付')
def transfer():
print('轉賬')
func_dic = {
'1': login,
'2': register,
'3': shopping,
'4': pay,
'5': transfer,
}
def run():
while True:
print("""
1 登陸
2 注冊
3 購物
4 支付
5 轉賬
6 退出
""")
choice = input('>>>: ').strip()
if choice == '6': break
if choice not in func_dic:
print('輸入錯誤命令,傻叉')
continue
func_dic[choice]()
# common.py
import time
from conf import settings
def logger(msg):
current_time = time.strftime('%Y-%m-%d %X')
with open(settings.LOG_PATH, mode='a', encoding='utf-8') as f:
f.write('%s %s' % (current_time, msg))