day18(time | sys | os 模块,递归删除文件,项…

2019-05-08 07:34:25来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一,复习

'''
1.跨文件夹导包 - 不用考虑包的情况下直接导入文件夹(包)下的具体模块

2.__name__: py自执行 '__main__' | py被导入执行 '模块名'

3.包:一系列模块的集合体,通过包内的__init__文件来管理包中所有模块提供给外界的名字
    -- 存放所以模块的文件夹名就是包名

4.导包三件事:
1)编译__init__文件的pyc
2)执行__init__文件形成全局名称空间,作为包的全局名称空间,包能直接使用的名字全部是__init__文件中提供的
3)在导包文件中形成一个名字指向包的名称空间

5.包的管理:通过__init__文件来管理,在包中使用相对导入

. 代表当前文件所在目录
.. 代表当前文件所在目录的上一级目录
# .开头的导包语法,from .开头 import 名字,只能存活在包内

'''

 

二,今日内容

'''
1.时间模块
2.系统模块
3.项目开发目录规范
4.loggin
5.json

 

三,sys模块

"""
命令行参数List,第一个元素是程序本身路径:sys.argv
退出程序,正常退出时 exit(0):sys.exit(n)
获取Python解释程序的版本信息:sys.version
最大int值:sys.maxsize | sys.maxint
环境变量:sys.path ******
操作系统平台名称:sys.platform
"""""

 

四,calendar 模块

"""
判断闰年:calendar.isleap(year) 能被4整除但不能被100整除的年份为普通闰年
查看某年某月日历:calendar.month(year, mouth)
查看某年某月起始星期与当月天数:calendar.monthrange(year, mouth)
查看某年某月某日是星期几:calendar.weekday(year, month, day)
"""""
import calendar
print(calendar.isleap(2020))         #True
print(calendar.month(2019,6))        #日历表
print(calendar.monthrange(2019,6))   #(5, 30)
print(calendar.weekday(2019,5,7))    #1 

 

五,time 模块

"""
 时间戳(timestamp):time.time()
 延迟线程的运行:time.sleep(secs)
(指定时间戳下的)当前时区时间:time.localtime([secs])
(指定时间戳下的)格林威治时间:time.gmtime([secs])
(指定时间元组下的)格式化时间:time.strftime(fmt[,tupletime])
"""

import  time
'''时间戳'''
# print(time.time())      #1557212208.8409944

'''延迟线程的运行'''
time.sleep(3)
print('结束了')

'''# 自定义睡觉'''
old_time = time.time()
while time.time() - old_time <= 3:
    pass

print(time.time())
print('醒了')


'''当前时区时间'''
print(time.localtime()) #time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=14, tm_min=59, tm_sec=32, tm_wday=1, tm_yday=127, tm_isdst=0)

time_old = time.localtime()
print(time_old)
print(time_old.tm_year)     #2019


'''格林威治时间'''
print(time.gmtime())    #time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=10, tm_min=44, tm_sec=56, tm_wday=1, tm_yday=127, tm_isdst=0)

time_obj2 = time.gmtime()
print(time_obj2)
print(time_obj2.tm_hour)    #10
print(time_obj2.tm_wday)    #1  星期从周一开始计算,周一为数字0

print(time.localtime(1557302208))   #将时间戳转化成时间对象
print(time.gmtime(1557012208))      #time.struct_time(tm_year=2019, tm_mon=5, tm_mday=4, tm_hour=23, tm_min=23, tm_sec=28, tm_wday=5, tm_yday=124, tm_isdst=0)


'''格式化时间'''
res  = time.strftime('%Y-%m-%d')        #2019-05-07
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)
now_time = datetime.datetime.now()
print(now_time)  # 2019-05-07 19:17:33.200227 当前时间

res = str(now_time)
print(res[:-7])  # 2019-05-07 19:19:03   时间截取

# 7天的时间对象
days = datetime.timedelta(days=7)
print(days, type(days))  # 7 days, 0:00:00 <class 'datetime.timedelta'>

# 免登陆时间运算|会员过期时间
time_obj = now_time + days  # 当前时间 + 7天
print(time_obj, type(time_obj))  # 2019-05-14 19:23:26.698641 <class 'datetime.datetime'>

now_time_obj = time_obj.replace(year=2000, day=1, second=0)
print(now_time_obj)      #2000-05-01 19:25:00.294593

print(datetime.date.fromtimestamp(1557094560))      #2019-05-06


print('=========')
print(datetime.datetime.now() +  datetime.timedelta(days=-1))  #昨天  2019-05-06 22:10:01.758706
print(datetime.datetime.now() -  datetime.timedelta(days=-1))  #明天 2019-05-08 22:10:01.758706

 

七,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)       #\
print(os.linesep)
print(os.name)      #nt
print(os.pathsep)   #;
print(os.environ)

os.mkdir('abc')       #在当前文件所在路径下创建abc文件夹,如果文件存在会报错
os.mkdir('D:\\abc')    #就是在指定的绝对路径下创建abc文件夹

os.mkdir('a/b/c')         #a,b必须提前存在,c不能存在
os.makedirs(r'a\b\c')      #a,b存在与否都可以,c不能存在

os.rename('abc','aaa')  #修改文件名
print(os.getcwd())      #获取工作目录  D:\Python_Project\ClassRoom\day18

os.rmdir('aaa')        #删除单层空文件
os.removedirs('a/b/c')  #删除多层空文件
os.remove('aa/1.py')    #删除指定文件

print(os.listdir('D:\Python_Project\ClassRoom\day18'))  #输入当前目录下的目录  ['a', 'abc', 'calendar模块.py', 'datetime模块.py', 'os模块.py', 'part5', 'sys模块.py', 'time模块.py']

 

八,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)
"""""
import os print(__file__) #当前执行文件路径 D:/Python_Project/ClassRoom/day18/os_path模块.py res = os.path.abspath('D://Python_Project/\ClassRoom/day18//os_path模块.py') #规范化 print(res) res = os.path.split('D:/Python_Project/ClassRoom/day18/os_path模块.py') print(res,res[1]) #('D:/Python_Project/ClassRoom/day18', 'os_path模块.py') os_path模块.py print(r'D:\Python_Project\ClassRoom\day18\os_path模块.py'.rsplit(os.sep ,1 )) #['D:\\Python_Project\\ClassRoom\\day18', 'os_path模块.py'] print(__file__) print(os.path.dirname(__file__)) print(os.path.dirname(os.path.dirname(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(__file__)) print(BASE_DIR) #该项目根目录是在执行时,自动获取到当前项目根目录的绝对路径
#案例:项目根目录的应用场景 import sys sys.path.append(BASE_DIR) #所有导包\导模块都依赖BASE_DIR print(sys.path) from part3.abc import new print(new) #<module 'part5.abc.new' from 'D:/Python_Project/ClassRoom\\part5\\abc\\new.py'> from part5.x import y print(y.x) from part5 import mm print(mm.mmmm) from mm import mmmm print(mmmm)
part1_path
= os.path.join(BASE_DIR,'part1') #BASE_DIR + os.sep + 'part1' sys.path.append(part1_path) part3_path = os.path.join(BASE_DIR,'part3') sys.path.append(part3_path) print(sys.path) #最后一级名称 print(os.path.basename('D:/Python_Project/ClassRoom/day18/os_path模块.py')) #os_path模块.py #路劲拼接: new_path = os.path.join(BASE_DIR,'part3','abc','new.py') print(new_path) #D:/Python_Project/ClassRoom\part3\abc\new.py """ 指定路径是否存在:os.path.exists(path) 是否是绝对路径:os.path.isabs(path) 是否是文件:os.path.isfile(path) 是否是路径:os.path.isdir(path) """

print(os.path.exists(new_path)) #是否存在 print(os.path.isabs(new_path)) #是否绝对路径 print(os.path.exists('abc')) print(os.path.isabs('abc')) print(os.path.isfile(new_path)) #是否是文件 print(os.path.isdir(new_path)) #是否是路径 print(os.path.isfile('abc')) print(os.path.isdir('abc')) print(__file__) file_path = 'D:/Python_Project/ClassRoom/day18/os_path模块.py' print(os.path.getctime(file_path)) print(os.path.getatime(file_path)) #最后存储时间 print(os.path.getmtime(file_path)) #最后修改时间 ''' 1557230709.9831052 1557233680.8510375 #修改了文件会进行更新 1557233680.8540661 ''' print(os.path.normcase('D:/Python_Project/\ClassRoom/day18/os_path模块.py')) #d:\python_project\\classroom\day18\os_path模块.py print(os.path.normpath('D:/Python_Project/ClassRoom/day18/..')) #D:\Python_Project\ClassRoom

 

 

九,os案例 :

'''将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) #提取part5中的mm.py文件 file_name = os.path.split(file)[1] #第二种方式提取 file_name = os.path.basename(file) print(file_name) #mm.py #将提取出来的mm.py文件添加到part6\abc中 new_file = os.path.join(folder,file_name) print(new_file) #D:/Python_Project/ClassRoom\part6\abc\mm.py #打开文件提取内容 with open(file,'rb')as r,open(new_file,'wb')as w: for line in r: w.write(line) #将part5中的mm.py 删除 os.remove(file) file = os.path.join(BASE_DIR,'part5','mm.py') print(file) #D:/Python_Project/ClassRoom\part5\mm.py folder = os.path.join(BASE_DIR,'part6','abc') print(folder) #D:/Python_Project/ClassRoom\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)): print('文件不存在或不是文件') return #循环遍历文件下的目录 for path in os.listdir(folder): #将文件名循环出来添加到D:/Python_Project/ClassRoom\part6后面 file_path = os.path.join(folder,path) print(file_path) #D:/Python_Project/ClassRoom\part6\a\b #如果是文件并且以.txt结尾的,就输出 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') # print(target_path) #D:/Python_Project/ClassRoom\part6 print_txt(target_path)

 

十,项目开发分析:

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

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

 


原文链接:https://www.cnblogs.com/HZLS/p/10828570.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:day21 04 三级菜单

下一篇:python书籍推荐:Python数据科学手册