• sys模块和shutil模块


    一、sys模块

      常用方法有:

    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    # write by congcong
    
    import sys
    
    # 命令行参数List,第一个元素是程序本身路径
    print(sys.argv) # ['D:/pycharm/Test1/Second_module/sys模块.py']
    
    # 退出程序,正常退出时exit(0)
    #sys.exit()
    
    # 获取python解释程序的版本信息
    print(sys.version) # 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
    
    # 最大的Int值
    print(sys.maxsize) # 9223372036854775807
    
    # 返回模块的搜索路径,初始化使用PYTHONPATH环境变量的值
    sys.path
    
    # 返回操作系统平台名称
    print(sys.platform)
    
    # 标准输出
    sys.stdout.write('plese:')
    
    # 标准输入
    val = sys.stdin.readline()[:-1]
    
    # 获取最大递归层次
    print(sys.getrecursionlimit())
    
    # 设置最大递归层次
    sys.setrecursionlimit(1000)
    
    # 获取解释器默认编码
    print(sys.getdefaultencoding())
    
    # 获取内存数据存到文件里的默认编码
    print(sys.getfilesystemencoding())

    二、shutil模块

      shutil模块是针对文件的高级操作,包括文件、文件夹和压缩包处理。

      主要方法如下:

    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    # write by congcong
    import shutil,os #高级文件操作
    
    # shutil.copyfileobj()打开然后拷贝文件
    f1 = open(file='before_revise.txt',mode='r',encoding='utf-8')
    f2 = open(file='bf_re_copy.txt',mode='w',encoding='utf-8')
    shutil.copyfileobj(f1,f2,length=16)
    
    # 直接拷贝文件
    shutil.copyfile('before_revise.txt','before_revise.txt2')
    
    # shutil.copymode(src,dst) # 仅拷贝权限,内容,组,用户均不变 。src表示原文件,dst表示拷贝的文件
    shutil.copymode('staff_table.new','before_revise.txt2')
    
    # shutil.copystat(src,dst) # 拷贝状态信息,包括:mode bits,atime,mtime,flags
    shutil.copystat('staff_table.new','before_revise.txt2')
    
    # shutil.copy(src,dst) # 拷贝文件和权限,相当与 copyfile()+ copymode()
    
    # shutil.copy2(src,dst) # 拷贝文件和状态信息
    
    # shutil.copytree() # 递归的去拷贝文件
    # shutil.ignore_patterns() # 不拷贝指定文件
    #shutil.copytree('my_module','module_new',ignore=shutil.ignore_patterns('__init__.py','ignore.py'))
    
    # shutil.rmtree()# 递归的删除文件,可以忽略某些错误
    
    # shutil.move() # 递归的移动文件,相当于剪切
    #shutil.move('module_new','pack') # 将 module_new中的文件全部剪切到 pack
    
    # shutil.make_archive(base_name,format,...)
    '''
    创建压缩包并返回文件路径
        base_name:压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径
            如:myfile   => 保存至当前路径
            如:/users/cc/myfile  => 保存到/users/cc/下
        format:压缩包种类,'zip','tar','bztar','gztar'
        root_dir:要压缩的文件夹路径(默认当前目录)
        owner:用户,默认当前用户
        group:组,默认当前组
        logger:用于记录日志,通常是logging.Logger对象
        
    shutil对压缩包的处理是调用了 ZipFile 和 TarFile 两个模块来进行的
    '''
    shutil.make_archive('D:pycharmpack','zip','pack')
    
    import zipfile
    # 压缩
    # z = zipfile.ZipFile('pack2.zip','w')
    # z.write('write.txt')
    # z.write('迭代器.py')
    # z.close()
    # 解压
    z = zipfile.ZipFile('pack2.zip','r')
    z.extractall('p2') # extractall 可引出的,拔出的 解压后的压缩包名叫p2
    z.close()
    
    import tarfile # 打包并不压缩
    # 压缩
    tar = tarfile.open('myfile.tar','w')
    tar.add('D:pycharmTest1Second_moduledatetime模块.py',arcname='f_read.zip') # arcname 指定打包后的名字
    tar.add('D:pycharmTest1Second_modulemy_module',arcname='my_mod.zip')
    tar.close()
    # 解压
    tar = tarfile.open('myfile.tar','r')
    tar.extractall('D:pycharm')
    tar.close()
  • 相关阅读:
    移植性问题のCString转char * ,string
    HDU 2894(欧拉回路)
    POJ 1149(最大流)
    POJ 3422 K取方格数(费用流)/TYVJ 1413
    POJ 1112(染色+连通分量+DP)
    POJ 2195(KM模板题)
    POJ 3615(FLOYD应用)
    POJ 1797(SPFA变种)spfa能做很多!
    POJ 1325(最小点覆盖)
    NOI2010 海拔(平面图最大流)
  • 原文地址:https://www.cnblogs.com/schut/p/8436729.html
Copyright © 2020-2023  润新知