Python脱产8期 Day018 2019/5/7

time:时间

'''
1.时间戳(timestamp):time.time()
》》时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,类型是float

2.延迟线程的运行:time.sleep(secs)
>>线程推迟指定的时间运行,单位为秒,

3.(指定时间戳下的)当前时区时间:time.localtime([secs])
》》time_obj = time.localtime()
  print(time_obj) # time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7,tm_hour=18,tm_min=47, tm_sec=2, tm_wday=1, tm_yday=127, tm_isdst=0)            
  print(time_obj.tm_year) # 2019 注:可以指定输出指定某一部分如年
  print(time.localtime(1473525444.037215)) #time.struct_time(tm_year=2016, tm_mon=9, tm_mday=11, tm_hour=0, tm_min=37, tm_sec=24, tm_wday=6, tm_yday=255, tm_isdst=0)
  注:传入参数转换成相应的时间格式未传参则以当前时间为准

4.(指定时间戳下的)格林威治时间:time.gmtime([secs])
》》gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。
time_obj2 = time.gmtime() # time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=11, tm_min=9, tm_sec=44, tm_wday=1, tm_yday=127, tm_isdst=0)
print(time_obj2) # time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=11, tm_min=9, tm_sec=44, tm_wday=1, tm_yday=127, tm_isdst=0)
print(time_obj2.tm_hour) #11
print(time_obj2.tm_wday) # 1(星期二)星期从周一开始计算,周一为数字0
注:传入参数转换成相应的时间格式未传参则以当前格林威治时间为准

5.(指定时间元组下的)格式化时间:time.strftime(fmt[,tupletime])
》》res = time.strftime("%Y-%m-%d %H:%M:%S")
  print(res) # 2019-05-07 19:16:21
  res = time.strftime("%Y-%m-%d %H:%M:%S", (2008, 8, 8, 8, 8, 8, 0, 0, 0))
  print(res) # 2008-08-08 08:08:08
注:可以格式化打印当前时间和传入时间的格式(传入的时间要为9位)

calendar:日历

'''
判断闰年:calendar.isleap(year)
查看某年某月日历:calendar.month(year, mouth)
查看某年某月起始星期与当月天数:calendar.monthrange(year, mouth)
查看某年某月某日是星期几:calendar.weekday(year, month, day)
'''
print(calendar.isleap(2200))  # False
print(calendar.month(2019, 5))  #
print(calendar.monthrange(2019, 5))  # (2, 31)
print(calendar.weekday(2019, 5, 7))  # 1

 

datatime:可以运算的时间

'''
1.当前时间:datetime.datetime.now()
》》
now_time = datetime.datetime.now()  
res = str(now_time)
print(res, res[:-7]) # 2019-05-07 19:26:57.723968 2019-05-07 19:26:57

2.昨天:datetime.datetime.now() + datetime.timedelta(days=-1)
》》
days = datetime.timedelta(days=7) # 7天的时间对象
time_obj = now_time + days
print(time_obj, type(time_obj)) # 2019-05-14 19:36:16.932051 <class 'datetime.datetime'>
# 免登陆时间运算 | 会员过期时间

3.修改时间:datatime_obj.replace([...])
》》
new_time_obj = time_obj.replace(year=2000, day=1, second=0)
print(new_time_obj) # 2000-05-01 19:39:00.872090

4.格式化时间戳:datetime.date.fromtimestamp(timestamp)
print(datetime.date.fromtimestamp(1557094560)) # 2019-05-06
'''

 

sys:系统

'''
1.命令行参数List,第一个元素是程序本身路径:sys.argv
》》
1.应用场景:在cmd中作为自动化脚本来执行
2.在cmd中:python3 脚本绝对路径 ,sys.argv打印出来的是执行文件绝对路径的列表。表中
3.可以外界传参作为字符串加入到列表中
4.必须考虑有参数和无参数两种情况,可分为参数的脚本文件和无参数的脚本文件
5.在使用脚本时必须要考虑到文件路径的特殊情况
退出程序,正常退出时exit(0):sys.exit(n)
获取Python解释程序的版本信息:sys.version
最大int值:sys.maxsize | sys.maxint
环境变量:sys.path
操作系统平台名称:sys.platform
'''

 

os:操作系统

'''
1.生成单级目录:os.mkdir('dirname')
》》
import os
os.mkdir('abc') # 在当前文件所在路径下创建abc文件夹
os.mkdir('D:\\abc') # 就是在指定的绝对路径下创建abc文件夹
os.mkdir('a/b/c') # a,b必须提前存在,c不能存在
2.生成多层目录:os.makedirs('dirname1/.../dirnamen2')
》》
os.makedirs(r'a\b\c') # a,b存在与否都可以,c不能存在
os.makedirs(r'D:\a\b\c') # 也可以指定到某个盘符下创建
3.重命名:os.rename("oldname","newname")
>
os.rename("a", "a1")#将执行文件同目录下的a文件命名为a1文件

4.工作目录:os.getcwd()
>
print(os.getcwd())
获取当前工作目录,即当前python脚本工作的目录路径
5.删除单层空目录:os.rmdir('dirname')
>>os.rmdir('aa/b/c')
删除单级空目录,若目录不为空则无法删除,报错

6.移除多层空目录:os.removedirs('dirname1/.../dirnamen')
>>若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.removedirs('a1/b')#删除a1和a1下的空文件
7.列举目录下所有资源:os.listdir('dirname')
》》
列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
print(os.listdir(r'E:\Python脱产8期课堂内容\day18\代码\part4')) #['aa', 'abc', 'os模块.py']
8.路径分隔符:os.sep
9.行终止符:os.linesep
10.文件分隔符:os.pathsep
11.操作系统名:os.name
12.操作系统环境变量:os.environ
13.执行shell脚本:os.system()
'''

 

os.path:系统路径操作

'''
1.执行文件的当前路径:__file__
>>
print(__file__)#打印查看当前执行文件的绝对路径
2.返回path规范化的绝对路径:os.path.abspath(path)  
res = os.path.abspath(r'F:/python8期\课堂内容/day18\\代码\part5\\os_path.py')
print(res)#F:\python8期\课堂内容\day18\代码\part5\os_path.py

3.将path分割成目录和文件名二元组返回:os.path.split(path)  
res = os.path.split(r'F:\python8期\课堂内容\day18\代码\part5\os_path.py')
print(res, res[1]) # ('F:\\python8期\\课堂内容\\day18\\代码\\part5', 'os_path.py') os_path.py
print(r'F:\python8期\课堂内容\day18\代码\part5\os_path.py'.rsplit(os.sep, 1)) # ['F:\\python8期\\课堂内容\\day18\\代码\\part5', 'os_path.py']
4.上一级目录:os.path.dirname(path)
print(__file__)
print(os.path.dirname(__file__))
print(os.path.dirname(os.path.dirname(__file__)))
结果:
E:/Python脱产8期课堂内容/day18/代码/part5/os_path.py
E:/Python脱产8期课堂内容/day18/代码/part5
E:/Python脱产8期课堂内容/day18/代码
注:可以嵌套使用
5.最后一级名称:os.path.basename(path)
print(os.path.basename(r'F:\python8期\课堂内容\day18\代码\part5')) # part5
6.指定路径是否存在:os.path.exists(path)


7.是否是绝对路径:os.path.isabs(path)
8.是否是文件:os.path.isfile(path)
9.是否是路径:os.path.isdir(path)
10.路径拼接:os.path.join(path1[, path2[, ...]])
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
print(BASE_DIR) # 该项目根目录是在执行时,自动获取的当前项目根目录的绝对路径
new_path = os.path.join(BASE_DIR, 'part3', 'abc', 'new.py')
print(new_path)
#
E:/Python脱产8期课堂内容/day18/代码
E:/Python脱产8期课堂内容/day18/代码\part3\abc\new.py
注: 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
最后存取时间: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'  

>>> a='/Users/jieli/test1/\\\a1/\\\\aa.py/../..'
>>> print(os.path.normpath(a))
/Users/jieli/test1
'''

跨文件夹移动文件

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)

 

项目开放周期

'''
1.调研
2.需求分析
3.架构师完成项目demo,完成项目架构
4.分工
5.写代码
6.白盒黑盒测试
7.项目审核发布 => 项目 -> 产品
'''

'''
bin: 可执行文件,入口,入口也可以放在项目根目录下
core: 核心代码
db:数据库相关文件
interface:接口
lib:包、模块、第三方文件夹
log:日志
setting:配置
static:静态文件
'''

 

 

猜你喜欢

转载自www.cnblogs.com/tfzz/p/10828604.html
今日推荐