知行合一
Choose a quality life!

一,  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('day1\day2')        ====>       创建路一个文件,若day1存在,则创建,不存在则不创建

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

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

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

                                     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下为'\r\n'     linux下为'\n'

                                    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

 

                         

                         

                          

                          

     

 

                                       

 

                                    

                                    

                                   

                                         

 

 

 

 

                                       

                                        

    

                                    

                                   

      

 

                                                     

                                                    

 

posted on 2018-08-08 21:03  小米没吃饭  阅读(144)  评论(0编辑  收藏  举报