• Python Day 18 time模块、datetime模块、os模块、os.path模块


      阅读目录

        时间模块(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'  
    
    
    >>> a='/Users/jieli/test1/\a1/\\aa.py/../..'
    >>> 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:静态文件
  • 相关阅读:
    mysql_fullindex全文索引
    MySQL8.0.12安装主从复制读写分离
    备库不能应用事务&Slave_SQL_Running No
    MySQL8.0.19_Group_Replication分布式集群部署
    MySQL8.0.12_InnoDB_Cluster
    oracle12c备份恢复策略
    CentOS7.X静默安装Oracle12C
    binlog恢复数据
    windows安装多个mysql&Docker安装MySQL5.7
    论自我要求
  • 原文地址:https://www.cnblogs.com/liangzhenghong/p/10828042.html
Copyright © 2020-2023  润新知