• time模块 os模块 序列化模块 sys模块


    一,  impoert  time 模块

          简单的说了解两个过程:   (1)时间戳时间                  ==(localtime)==>      结构化时间      ==(strftime)==>         字符串,格式化时间 

                                                         ret = time.localtime(20000000)              ret1 = time.strftime('%Y-%m-%d %H:%M:%S',ret)            print(ret1)      指定时间戳格式化

                                                         ret = time.localtime()                  ret1 = time.strftime('%Y-%m-%d %H:%M:%S',ret) print(ret1)       print(ret1)       默认本地时间戳格式化

                                                         print(time.strftime('%Y-%m-%d %H:%M:%S'))                      默认本地时间戳格式化

                                                         print(time.time)               查找当地时间戳时间                       time.sleep(2)        计时方法,括号内参数为秒

                                                 (2)字符串,格式化时间      ==(strptime)==>      结构化时间      ==(mktime)==>         时间戳时间

                                                        s1 = '2018-6-19'         ret = time.strptime(s1,'%Y-%m-%d')            ret1 = time.mktime(ret)          print(ret1)       普通查找指定字符串时间戳

                                                       ret = time.strftime('%Y-%m-1')        ret1 = time.strptime(ret,'%Y-%m-%d')               print(time.mktime(ret1))       特定查找每月一号时间戳

    二,import   sys 模块

            sys.path            返回模块的搜索路径                      sys.moudles        返回启动python后所有导入的模块和py文件,是个大字典,__main__显示的是当前执行文件或模块

            注意:  sys.argv      返回命令行参数的列表,第一个元素是执行文件所在的路径,在cmd界面启动时,用这个命令进行调试时,多半会用到,利用列表索引赋值

                                       如:   name = sys.argv[1]         pwd = sys.argv[2]

                                               if name == 'alex' and pwd == 'alex3714':           print('执行以下代码')

                                               else:      exit()

            sys.exit()            结束程序                                        sys.platform        返回操作系统平台名称,不怎么准              sys.version        获取Python解释程序的版本信息

            

    三,import   os  模块

         重要的知识点:         os.mkdir('day1day2')        ====>       创建路一个文件,若day1存在,则创建,不存在则不创建

                                        os.makedirs('day1day2')     ====>     创建多层递归目录   若文件夹存在没有文件则覆盖,     若文件夹存在且有文件,就停止    若果文件夹不存在则创建 

                                         os.rmdir('day1')             ===>    删除单级空目录,若目录不为空则无法删除

                                        os.removedirs('day1day2')     ===>  若目录为空,则删除,并递归到上一层目录,若空,则删除.若有文件则停止

                                         os.listdir('day1')                   ===>  列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

                                         os.remove(要删除的文件)        ====>  删除一个文件

                                         os.rename('老名','新名')         ====>   重命名文件目录

     使用python和操作系统命令交互:

                                          os.system ('bash  command')       ===>    运行shell 命令,直接显示

                                          os.popen ('bash  command').read()      ===>   运行shell命令,获取执行结果,可以读取

                                          os.environ                                ===>    获取系统环境变量

    win与linux(mac)的差异命令  :           这些差异的路径,和符号,可以运用到程序中,让整个程序可以有更好的适用性

                                        os.stat()           ===>   获取文件目录信息

                                         os.sep            ===>  输出操作系统特定的路径分隔符            win下为'\',   linux 下为'/'

                                        os.linesep       ===>  输出当前操作系统特定的路径分隔符      win下为' '     linux下为' '

                                        os.pathsep      ===>输出用于分割文件路径的字符串               win下为;        linux下为:

                                         os.name         ====>输出当前使用的平台                               win下为'nt'      linux下为'posix'

    os.path  系列命令:      os.path.abspath(路径)        将路径的符号规范化绝对路径 ,括号内放的是要整理的路径,相队路径会返回双路径

                                                    os.path.dirname(路径)        返回路径最后文件的上层目录,  ,多次使用,就多次返回,知道取到根目录停止

                                                    os.path.basename(路径)    返回路径最后文件     能查询,不能做修改     

                                                    os.path.split(路径)             默认将路径的最后一个文件与前面的路径分开,并放在元组中

                                      os.path.isfile(路径)               若路径是个存在的文件,返回True, 若不是则返回False

                                      os,path,isdir(路径)               若路径是个存在的目录, 返回True, 若不是则返回False

                                      os.path.join(路径,目录,文件,文件)     这里有坑,注意如果括号内有绝对路径,那么绝对路径之前的目录或者文件将被忽略.只能有一个绝对路径

                                                                                                如果有多个,则取最后一个绝对路径和绝对路径后面的参数组合

                                         os.path.getatime(路径)          返回路径所指向的文件或目录的最后访问时间     注意:拿到的时间都是一个时间戳时间,需要转成字符串格式化

                                         os.path.getmtime(路径)         返回路径所指向的文件或目录的最后修改时间     注意:拿到的时间都是一个时间戳时间,需要转成字符串格式化

                                         os.path.getsize(路径)             返回路径的大小     这里要注意的是大小指的是字节,文件夹的大小固定是4096,文件的大小不固定

    os.path   了解命令:  os.path.exists(路径)                 如果路径存在,返回True,若不存在,返回False

                                     os.path.isabs(路径)                  如果路径是绝对路径,返回True

    四,序列化:   处理数据得到一个字符串的结果,就是序列化        ====>方法模块      json            pickle        shelve

                       应用:(1)处理文件需要序列化             (2)网络传输数据需要序列化

                json:    dumps     loads   处理数据,单独处理数据(处理列表,字符串,字典,元组)             

                                                    注意:字典里的key必须是字符串类型,如果是数字,序列化后会自动转换成字符串类型,处理完后的字典key是双引号

                                                            字典里值是元组时,序列化后会强制转化为列表类型,当然了,元组在序列化时不能当作key使用

                                                            可以多次dump数据到文件里,可以多次dump但是不能load回来了,普通的write逐行写入,再逐行load就可以.

                                         如:    dic = {'k1':'v1'}               str_dic = json.dumps(dic)             print(type(str_dic),str_dic)        #将字典序列化成字符串

                                                   dic = {'k1':'v1'}               ret = json.loads(str_dic)                print(type(ret),ret)                  #将序列化的字符串转化成原类型

                           dump         load     可以同时处理数据,处理文件

                                           如:    dic = {'aaa':'bbb'}              with open('json_dump2','w') as f:           json.dump(dic,f)              #将文件序列化并写入文件

                                                                                               with open('json_dump2') as f:                print(type(json.load(f)))       #将文件读出来,并反序列化                   

                pickle:    dumps,  loads 的结果是bytes,  所以关于pickle模块的文件操作要用 b 模式,  包括  'wb'   'rb'

                              支持几乎所有的对象的序列化

                              对于对象的序列化,要求对象的类在内从中

                              多次dump  和 load  做了良好的处理,     反序列化读取的时候通过异常处理,可以循环多次取出多次dump在文件内的内容

    import pickle
    class Studen:
        def __init__(self,name,age):
            self.name = name
            self.age = age
    p1 = Studen('',16)
    ret = pickle.dumps(p1)
    print(pickle.loads(ret).name)
    with open('pickle_demo','wb') as f:  #将对象序列化成Byte写到文件中
        pickle.dump(p1,f)
    with open('pickle_demo','rb') as f1:  #反序列化读取状态,适合游戏读挡
        print(pickle.load(f1).age)
    View Code

               shelve:  如果你写了一个文件,改动的比较少,读取的比较多,且你大部分的读取需要某个key获得某个value,那就用shelve

    import shelve
    f = shelve.open('shelve_file')
    f['key'] = {'int':10, 'float':9.5, 'string':'Sample data'}  #直接对文件句柄操作,就可以存入数据
    f.close()
    
    import shelve
    f1 = shelve.open('shelve_file')
    existing = f1['key']  #取出数据的时候也只需要直接用key获取即可,但是如果key不存在会报错
    f1.close()
    print(existing)
    View Code

                             

                             

                              

                              

         

                                           

                                        

                                        

                                       

                                             

                                           

                                            

        

                                        

                                       

          

                                                         

                                                        

  • 相关阅读:
    LeetCode59 Spiral Matrix II
    LeetCode58 Length of Last Word
    LeetCode54 Spiral Matrix
    LeetCode63 Unique Paths II
    LeetCode62 Unique Paths
    LeetCode55 Jump Game
    网易2017年校招笔试题 最大的奇约数
    Codeforces Round #119 (Div. 2)
    Codeforces Round #118 (Div. 2)
    2016 MIPT Pre-Finals Workshop Taiwan NTU Contest
  • 原文地址:https://www.cnblogs.com/laogao123/p/9445669.html
Copyright © 2020-2023  润新知