zoukankan      html  css  js  c++  java
  • python 阿狸的进阶之路(6)

    常用模块

    json
    # 序列化
    #将内存的数据存到硬盘中,中间的格式,可以被多种语言识别,跨平台交互数据
    #json 可以将字典之类的数据类型存到字典中
    import json
    dic = {"a":1}
    res2 = str(dic)
    res = json.dumps(dic)
    print(res,type(res))
    print(res2,type(res2))
    #{"a": 1} <class 'str'>
    # {'a': 1} <class 'str'>
    # python None =  null
    #json 只识别 "",不识别''
    
    # user= {'name':'zym','age':25}
    # with open("ccc.json",'w',encoding='utf-8 ') as f :
    #     f.write(json.dumps(user))
    #
    # #一步到位的方法
    # json.dump(user,open('ddd.json','w',encoding='utf-8'))
    
    
    # 反序列化
    import json
    # with open('ddd.json','r',encoding='utf-8') as f1:
    #     user2 = json.loads(f1.read())
    #     print(user2,type(user2))
    #     print(user2["name"])
    
    # 一步到位的方法
    # user2 = json.load(open('ddd.json','r',encoding='utf-8'))
    # print(user2['name'])
    #random 随机模块
    import random
    print(random.random())
    print(random.choice([2,'23',[4,5]]))
    print(random.randint(1,3))
    print(random.randrange(1,3))
    print(random.sample([1,2,3,['zy']],3))
    print(random.uniform(1,2))
    item = [1,3,5,7,9]
    random.shuffle(item)
    print(item)
    #生成随机验证码
    def make_code(n):
        res = ''
        for i in range(n):
            b = str(random.randint(0,9))
            a = chr(random.randint(65,90))
            c =random.choice([a,b])
            res +=c
        return res
    
    print(make_code(6))
    文件操作模块shutil
    import shutil
    shutil.copyfileobj(open('aaa','r'),open('bbb','w')) #将文件内容拷贝到另一个文件中
    
    shutil.copyfile('f1.txt','f2.txt')    #拷贝文件内容,无需打开
    
    shutil.copymode('f1.txt','f2.txt') #仅拷贝权限,内容,组,用户均不变,目标文件必须存在
    
    shutil.copystat('f1.txt','f2.txt') #仅拷贝信息,包括:mode bits,mtime,flags,目标文件必须存在
    
    shutil.copy('f1.txt','f2.txt') #拷贝文件和权限,相当于linux cp -a
    
    shutil.copy2('f1.txt','f2.txt') #拷贝文件和状态信息
    
    shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
    #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除
    
    import shutil
    
    shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
    #symlinks =True 拷贝成软链接
    '''
    通常的拷贝都把软连接拷贝成硬链接,即对待软连接来说,创建新的文件
    '''
    
    #shutil.rmtree(path[, ignore_errors[, onerror]])
    #递归的去删除文件
    shutil.rmtree('aaaa')  #######  linux中的rm -rf命令,及其危险
    
    shutil.move()  #递归的移动文件
    
    
    
    # shutil.make_archive(base_name, format,...)
    #
    # 创建压缩包并返回文件路径,例如:zip、tar
    #
    # 创建压缩包并返回文件路径,例如:zip、tar
    #
    #     base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
    #     如 data_bak                       =>保存至当前路径
    #     如:/tmp/data_bak =>保存至/tmp/
    #     format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
    #     root_dir: 要压缩的文件夹路径(默认当前目录)
    #     owner: 用户,默认当前用户
    #     group: 组,默认当前组
    #     logger: 用于记录日志,通常是logging.Logger对象
    
    # 将 /data 下的文件打包放置当前程序目录
    # ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')
    # 将 /data下的文件打包放置 /tmp/目录
    # ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')
    
    
    # shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:
    import zipfile
    shutil.make_archive('bak','gztar',root_dir=r"你要打包的文件目录")    #相当于  tar  cvfz  bak   /root
    
    
    import tarfile
    t = tarfile.open('bak.tar.gz')  #得到一个对象
    t.extractall('你想要解压到的路径')
    t.close()
    sys模块的进图条
    #进度条
    # [#             ]
    # [##            ]
    # [###           ]
    # [####          ]
    # print('#'*1)
    # print('#'*2)
    # print('#'*3)
    # print('#'*4)
    # print('#'*5)
    # import sys
    # import time
    # print('[%s]' %'#')
    # print('[%s]' %'#')
    # print('[%s]' %'#')
    # print('[%s]' %'#')
    # print('[%s]' %'#'*10)
    # print('[%-15s]'%'###')
    # print(('[%%-%ss]' % 50 )%'###')
    # print('%s%%' %100)
    # print(('[%%-%ss]'% 50 )%'###','%s%%' %100)
    # #                   a                    percent
    #
    #
    #
    #
    #
    #
    #
    # while True:
    #     print(('[%%-%ss]' % 50) % '###', '%s%%' % 100,end='')
    #     time.sleep(0.05)
    #打印不换行,end = '',覆盖打印即将光标返回开头
    
    # import time
    # def progress(percent,width = 50):
    #     if percent>1:
    #         percent = 1
    #     print(('
    [%%-%ds]'%width)%('#'*int(percent*width)),end='')
    #
    # recv_size = 0
    # total = 10241
    #
    # while recv_size < total:
    #     time.sleep(0.1)
    #     recv_size+=1024
    #     percent = recv_size/total
    #     progress(percent)
    
    
    
    
    
    
    
    
    #进度条
    print("[%s]" % '#')
    print("[%s]" % '##')
    print("[%s]" % '###')
    #先考虑将[]设置为指定的宽度,由于是左对齐
    print("[%-50s]"  %  '###')
    #并且不能写死了
    print(('[%%-%ds]' %50)) #[%-50s]
    print(('[%%-%ds]' %50) % "###")
    print(('[%%-%ds]' %50) % ("#"*30))
    #这时候30,50都是可以被替换掉的,既可以被传参
    # “#”的数量是根据百分比来的,例如下载包,用包的现在下载的大小除包的总大小,来得到#的数量
    #先定义一个函数,用户自定义[]的宽度
    
    import time
    def progress(percent,width = 50):
        if  percent > 1:
            percent =1     #  需要进行判断,否则会出现大于100%的情况
        show_t = ('[%%-%ds]' %width) % ("#"*int(width*percent))     #
     将光标移动到开头
        print( '
    %s %d%%' %(show_t,int(100*percent)),end='')
    
    
    
    
    current_size = 0
    total_size = 102410
    while current_size < total_size:
        time.sleep(0.1)          #需要睡眠,要不然看不到打印的效果,因为速度太快
        current_size += 1024
        percent = current_size/total_size
        progress(current_size/total_size)
  • 相关阅读:
    磁盘
    磁盘接口
    Linux help websites
    [SOJ] 1282. Computer games (KMP)
    [SOJ]1753 解码
    hdu 3473 裸的划分树
    hdu 4417 划分树
    hdu 4665 搜索
    hdu 4340 树状DP
    hdu 4005 边连通度与缩点
  • 原文地址:https://www.cnblogs.com/taozizainali/p/8315190.html
Copyright © 2011-2022 走看看