阅读目录
时间模块(time、datetime)
日历模块(calendar)
sys模块
os模块
os.path模块
##时间模块
# #time模块:时间戳、结构化的时间、格式化的字符串时间 # #1、时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。 # #2、格式化的时间字符串(Format String) # #3、结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,是否是夏令时) # #4、英文显示 'Mon Jan 26 00:52:24 1970' ----》format默认为:"%a %b %d %H:%M:%S %Y"
import datetime import time #时间戳 1557227892.3337016 print(time.time()) #将时间戳转换为本地时区结构化时间元组 struct_time print(time.localtime()) #将时间戳转换为UTC时区结构化时间元组 struct_time print(time.gmtime()) #将一个struct_time转化为时间戳 ---> 1557229253.0 print(time.mktime(time.localtime())) #结构化时间转为格式化输出时间 2019-05-07 19:38:23 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) #把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作 time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=19, tm_min=38, tm_sec=23, tm_wday=1, tm_yday=127, tm_isdst=-1) print(time.strptime('2019-05-07 19:38:23','%Y-%m-%d %X')) #结构化时间转为英文格式输出、无参默认传入结构化时间time.localtime() print(time.asctime())#Tue May 7 19:48:26 2019 print(time.asctime(time.localtime())) print(time.asctime(time.localtime(time.time()))) #将时间戳转为英文格式输出、无参默认传入时间戳time.time() print(time.ctime()) print(time.ctime(time.time())) #获得当前时间 2019-05-07 19:56:56.738921 print(datetime.datetime.now()) #时间戳格式time.time()转为日期格式 2019-05-07 print(datetime.date.fromtimestamp(time.time())) #获得三天后时间2019-05-10 20:03:08.253856 print(datetime.datetime.now() + datetime.timedelta(3)) #获得三天前的时间2019-05-04 20:03:54.933696 print(datetime.datetime.now() + datetime.timedelta(-3)) #获得当前时间+3小时 2019-05-07 23:04:29.103221 print(datetime.datetime.now() + datetime.timedelta(hours=3)) #获得当前时间+30分钟 2019-05-07 20:35:01.856802 print(datetime.datetime.now() + datetime.timedelta(minutes=30)) c_time = datetime.datetime.now() print(c_time.replace(minute=3,hour=2)) #时间替换 print( datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) print(datetime.datetime(2014, 8, 15, 9, 57, 52, 779893)) print(datetime.datetime.today())#2019-05-07 20:13:31.223521
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身
##日历模块(calendar)
import calendar #判断是否是闰年 print(calendar.isleap(2019)) #查看某年某月日历 print(calendar.month(2018,8)) c = calendar.calendar(2017) c = calendar.TextCalendar() c = calendar.HTMLCalendar() print(c) #返回两个整数。第一个是该月的首日所在星期的日期码(0~6),每周的起始日期码0(星期一)到6(星期日),第二个是该月的天数(28-31) print(calendar.monthrange(2019, 5)) #查看某年某月某日是星期几 print(calendar.weekday(2017, 7, 23))
##sys模块
#1 sys.argv 命令行参数List,第一个元素是程序本身路径 #2 sys.exit(n) 退出程序,正常退出时exit(0) #3 sys.version 获取Python解释程序的版本信息 #4 sys.maxint 最大的Int值 #5 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 #6 sys.platform 返回操作系统平台名称 #示例 import sys import os.path print(sys.argv)#['C:/untitled1/第十八天/第十八天.py'] 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] # copy_file(old,new) if os.path.isfile(old) and os.path.isdir(new): copy_file(old,new) #在命令行输入
python3 C:untitled1第十八天第十八天.py print python3 C:untitled1第十八天第十八天.py copy_file C:untitled1user_info C:untitled1第十八天
##os.path 模块
#执行文件的当前路径:__file__ #返回path规范化的绝对路径:os.path.abspath(path) #将path分割成目录和文件名二元组返回:os.path.split(path) #上一级目录:os.path.dirname(path) #最后一级名称:os.path.basename(path) #指定路径是否存在:os.path.exists(path) #是否是绝对路径:os.path.isabs(path) #是否是文件:os.path.isfile(path) #是否是路径:os.path.isdir(path) #路径拼接:os.path.join(path1[, path2[, ...]]) #最后存取时间:os.path.getatime(path) #最后修改时间:os.path.getmtime(path) #目标大小:os.path.getsize(path)
normcase函数
在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。
>>> os.path.normcase('c:/windows\system32\')
'c:\windows\system32\'
normpath函数
规范化路径,如..和/
>>> os.path.normpath('c://windows\System32\../Temp/')
'c:\windows\Temp'
在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。
>>> os.path.normcase('c:/windows\system32\')
'c:\windows\system32\'
normpath函数
规范化路径,如..和/
>>> os.path.normpath('c://windows\System32\../Temp/')
'c:\windows\Temp'
>>> a='/Users/jieli/test1/\a1/\\aa.py/../..'
>>> print(os.path.normpath(a))
/Users/jieli/test1
>>> print(os.path.normpath(a))
/Users/jieli/test1
import os.path #C:/untitled1/第十八天/第十八天.py print(__file__) #C:untitled1第十八天 第十八天.p res = os.path.abspath('C:\untitled1第十八天第十八天.py') res1 = os.path.abspath('C:/untitled1第十八天第十八天.py') res2 = os.path.abspath(r'C:untitled1第十八天第十八天.py') res3 = os.path.abspath('C:/untitled1第十八天\n第十八天.py') print(res3) #('C:\untitled1', '第十八天') res=os.path.split(r'C:untitled1第十八天') print(res) print(res[1])#第十八天 #上一级C:/untitled1/第十八天 print(os.path.dirname(__file__)) print(os.path.dirname(os.path.dirname(__file__)))#C:/untitled1 BASE_DIR = os.path.dirname(os.path.dirname(__file__)) print(BASE_DIR)#该项目根目录是在执行时自动获取的当前项目根目录的绝对路径 #案例:项目根目录的应用场景 import sys sys.path.append(BASE_DIR)#所有的导包/模块兜里来BASE_DIR print(sys.path) #最后一级名称 第十八天.py print(os.path.basename(r'C:untitled1第十八天第十八天.py')) #路径拼接 new_path = os.path.join(BASE_DIR,'第十七天','pgk','test.py') print(os.path.exists(new_path)) #判断是否存在 print(os.path.isabs(new_path))#判断是否是绝对路径 print(os.path.isfile(new_path))#判断是否是文件 print(os.path.isdir(new_path))#判断是否是文件夹/目录 #获取文件大小 print(os.path.getsize(r'C:untitled1第十八天 ew.py')) # file_path = r'C:untitled1第十八天第十八天.py' print(os.path.getctime(file_path))#创建时间 print(os.path.getatime(file_path))#访问时间 print(os.path.getmtime(file_path))#修改时间
##os模块
#生成单级目录:os.mkdir('dirname') #生成多层目录:os.makedirs('dirname1/.../dirnamen2') #重命名:os.rename("oldname","newname") #工作目录:os.getcwd() #删除单层空目录:os.rmdir('dirname') #移除多层空目录:os.removedirs('dirname1/.../dirnamen') #删除文件:os.remove(file) #列举目录下所有资源:os.listdir('dirname') #路径分隔符:os.sep #行终止符:os.linesep #文件分隔符:os.pathsep #操作系统名:os.name #操作系统环境变量:os.environ #执行shell脚本:os.system()
#示例
import os
# os.mkdir('abc')#在当前文件所在路径下创建abc文件夹
# os.mkdir('D:\abc')#在绝对路径下创建
#不能递归创建,文件夹c前面不存在报错
# os.mkdir('a/b/c')
#递归创建
# os.makedirs(r'ac')
#重命名
# os.rename('a','aa')
# #删除空目录,不空无法删除
# os.rmdir('aa/b/c')
# os.removedirs('aa/b/c')
#删除文件,
os.remove()
##跨文件移动文件
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)
##递归删除的思路
def delete_dir(folder): for path in os.listdir(folder): # 如果path是文件夹 delete_dir(path) # 如果是文件os.remove(path) pass # for走完了代表folder内部删空了,可以删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:静态文件