time模块 提供各种操作时间的函数
时间戳(timestamp):time.time()
延迟线程的运行:time.sleep(secs)
指定时间戳下的)当前时区时间:time.localtime([secs])
指定时间戳下的)格林威治时间:time.gmtime([secs])
指定时间元组下的)格式化时间:time.strftime(fmt[,tupletime])
1) 当前时区时间 time_obj = time.localtime() print(time_obj) print(time_obj.tm_year) 2)格林威治时间 time_obj2 = time.gmtime() print(time_obj2) print(time_obj2.tm_hour) print(time_obj2.tm_wday) # 星期从周一开始计算,周一为数字0 3) 1557294569 print(time.localtime(1557094569)) # 将时间戳转化成时间对象 print(time.gmtime(1557094569)) 4) 格式化时间 (2019, 5, 6, 6, 16, 9, 0, 126, 0) res = time.strftime("%Y-%m-%d %H:%M:%S") print(res) res = time.strftime("%Y-%m-%d %H:%M:%S", (2008, 8, 8, 8, 8, 8, 0, 0, 0)) print(res)
datetime模块
当前时间:datetime.datetime.now()
昨天:datetime.datetime.now() + datetime.timedelta(days=-1)
修改时间:datetime_obj.replace([...])
格式化时间戳:datetime.date.fromtimestamp(timestamp)
import datetime print(datetime.datetime.year) print(datetime.datetime.day) now_time = datetime.datetime.now() # 当前时间 res = str(now_time) print(res, res[:-7]) days = datetime.timedelta(days=7) # 7天的时间对象 print(days, type(days)) # 免登陆时间运算 | 会员过期时间 time_obj = now_time + days print(time_obj, type(time_obj)) new_time_obj = time_obj.replace(year=2000, day=1, second=0) print(new_time_obj) print(datetime.date.fromtimestamp(1557094560)) # 2019-05-06
calendar模块
判断闰年:calendar.isleap(year)
查看某年某月日历:calendar.month(year, mouth)
查看某年某月起始星期与当月天数:calendar.monthrange(year, mouth)
import calendar print(calendar.isleap(2200)) print(calendar.month(2019, 5)) print(calendar.monthrange(2019, 5))
sys模块 用于提供对解释器相关的访问及维护,并有很强的交互功能
模块命令行参数List,第一个元素是程序本身路径:sys.argv 应用于自动化脚
- sys.argv接受所有py文件作为脚本执行外界传入的参数
- 外界执行传参的方式,cmd中通过python接收器直接执行py文件,python3 py文件 参数们
- sys.argv = [py文件绝对路径, 参数1, ..., 参数n]
退出程序,正常退出时exit(0):sys.exit(n)
获取Python解释程序的版本信息:sys.version
最大int值:sys.maxsize | sys.maxint
环境变量:sys.path ******
操作系统平台名称:sys.platform
import sys sys.exit(0) print('哈哈') print(sys.version) print(sys.maxsize) print(sys.maxint) # py2 = sys.maxsize print(sys.platform)
import sys
print(sys.argv)
import os.path
def f1():
print('执行自动化打印方法')
def f2():
print('执行自动化移动方法')
def copy_file(old, new):
# print("将%s复制成%s" % (old, new))
new_file = os.path.join(new, 'new.py')
with open(old, 'rb') as rf, open(new_file, 'wb') as wf:
for line in rf:
wf.write(line)
cmd_map = {
'print': f1,
'move': f2
}
if len(sys.argv) > 1:
cmd = sys.argv[1]
if cmd in cmd_map:
cmd_map[cmd]()
if len(sys.argv) == 4:
if sys.argv[1] == 'copy_file':
old = sys.argv[2]
new = sys.argv[3]
if os.path.isfile(old) and os.path.isdir(new):
copy_file(old, new)
os模块 用于提供系统级别的操作
生成单级目录:os.mkdir('dirname')
生成多层目录:os.makedirs('dirname1/.../dirnamen2')
重命名:os.rename("oldname","newname")
工作目录:os.getcwd()
删除文件:os.romeve('file_path')
删除单层空目录:os.rmdir('dirname')
移除多层空目录:os.removedirs('dirname1/.../dirnamen')
列举目录下所有资源:os.listdir('dirname')
路径分隔符:os.sep
行终止符:os.linesep
文件分隔符:os.pathsep
操作系统名:os.name
操作系统环境变量:os.environ
执行shell脚本:os.system()
import os print(os.sep, os.linesep, os.pathsep, os.name, os.environ) os.mkdir('abc') # 在当前文件所在路径下创建abc文件夹 os.mkdir('D:\abc') # 就是在指定的绝对路径下创建abc文件夹 os.mkdir('a/b/c') # a,b必须提前存在,c不能存在 os.makedirs(r'ac') # a,b存在与否都可以,c不能存在 os.rename("a", "aa") print(os.getcwd()) os.rmdir('aa/b/c') os.removedirs('aa/b/c') os.remove('aa/bb/1.py') print(os.listdir(r'F:python8期课堂内容day18代码part4')) def delete_dir(folder): for path in os.listdir(folder): 如果path是文件夹 delete_dir(path) 如果是文件os.remove(path) pass for走完了代表folder内部删空了,可以删folder print(os.system('dir'))
案例
将part5下的mm.py移动到part6下abc文件夹中 import os import sys BASE_DIR = os.path.dirname(os.path.dirname(__file__)) sys.path.append(BASE_DIR) def move_file(file, folder): if not (os.path.exists(file) and os.path.isfile(file)): print('文件不存在或非法') return False if not os.path.exists(folder): os.makedirs(folder) file_name = os.path.split(file)[1] # file_name = os.path.basename(file) new_file = os.path.join(folder, file_name) with open(file, 'rb') as rf, open(new_file, 'wb') as wf: for line in rf: wf.write(line) os.remove(file) file = os.path.join(BASE_DIR, 'part5', 'mm.py') folder = os.path.join(BASE_DIR, 'part6', 'abc') move_file(file, folder) 遍历打印目标路径中所有的txt文件 def print_txt(folder): if not os.path.exists(folder) or os.path.isfile(folder): return for path in os.listdir(folder): file_path = os.path.join(folder, path) if os.path.isfile(file_path) and file_path.endswith('.txt'): print(path) elif os.path.isdir(file_path): print_txt(file_path) # 递归 target_path = os.path.join(BASE_DIR, 'part6', 'target') print_txt(target_path)
项目开发目录规范
1.调研
2.需求分析
3.架构师完成项目demo,完成项目架构
4.分工
5.写代码
6.白盒黑盒测试
7.项目审核发布 => 项目 -> 产品
bin: 可执行文件,入口,入口也可以放在项目根目录下
core: 核心代码
db:数据库相关文件
interface:接口
lib:包、模块、第三方文件夹
log:日志
setting:配置
static:静态文件