zoukankan      html  css  js  c++  java
  • 常用模块(shutil copy、压缩、解压)

    作用与功能

    主要用于文件的copy,压缩,解压

    导入shuitl模块:

    import shutil

     

     copy方法

    复制代码
     1 1、shutil.copyfileobj()  打开file1,并copy写入file2:
     2 with open("笔记1",'r',encoding='utf-8') as f1,open('笔记2','w',encoding='utf-8') as f2:
     3     shutil.copyfileobj(f1,f2)
     4 
     5 
     6  
     7 #输入文件名就能直接拷贝(调用copyfileobj方法)
     8 shutil.copyfile("笔记1","笔记3")
     9 
    10 
    11 
    12 #拷贝权限,内容,组,用户均不变:(win看不出来,linux下可以尝试)
    13 shutil.copymode("笔记1","笔记3")
    14 
    15 
    16 
    17 #拷贝状态的信息(只拷贝权限,不创建文件),包括:mode bits,atime,mtime,flags
    18 shutil.copystat("笔记1","笔记3")
    19 
    20 
    21 
    22 #拷贝文件和权限:
    23 shutil.copy("笔记1","笔记3")
    24 
    25 
    26 
    27 #拷贝文件和状态信息:(文件和权限)
    28 shutil.copy2("笔记1","笔记3")
    29 
    30 
    31 
    32 
    33 #递归的去copy文件:(copy目录)
    34 shutil.copytree(r"D:a",r"D:a1")
    35 例如:用python脚本实现代码发布指定线上服务器,例如svn和git在发布的时候,有些文件是不需要进行拷贝的,因袭就需要进行过滤
    36 方法如下:
    37 shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
    38 
    39 
    40 
    41 #递归的删除目录:(有链接占中目录,删除报错)
    42 shutil.rmtree(r"D:a1")
    43 
    44 
    45 
    46 #移动文件:
    47 shutil.move(r"D:a",r"D:a1")
    复制代码

     

    压缩和解压缩方法

    复制代码
     1 1、全目压缩:
     2 #创建压缩包,并返回文件路径:例如:zip  tar
     3 #创建压缩包并返回文件路径,例如:zip、tar
     4 #格式:shutil.make_archive(base_name,format(zip),root_dir,owner,group,logger)
     5 # base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
     6 # 如:www                        =>保存至当前路径
     7 # 如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
     8 # format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
     9 # root_dir: 要压缩的文件夹路径(默认当前目录)
    10 # owner: 用户,默认当前用户
    11 # group: 组,默认当前组
    12 # logger: 用于记录日志,通常是logging.Logger对象
    13 #将 /Users/wupeiqi/Downloads/test 下的文件打包放置当前程序目录
    14 
    15 import shutil
    16 ret = shutil.make_archive("wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')
    17 18 #将 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目录
    19 import shutil
    20 ret = shutil.make_archive("/Users/wupeiqi/wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')
    21 22 #将D:软件pychardatas13Atm目录下的文件打包放置在D:软件pychardatas13Atm_name_tar文件下
    23 shutil.make_archive(r"D:软件pychardatas13Atm_name_tar","tar","D:软件pychardatas13Atm")
    24 
    25 ==========================================================================
    26 三、解压方法和指定文件的压缩和解压:
    27 
    28 2、Zip单个文件压缩与解压:(打包在压缩)
    29 (压缩包也可以当做一个文件,想要加入压缩文件的话可以直接写进压缩包里)
    30 
    31 2.1:#写入指定压缩文件(w)
    32 z = zipfile.ZipFile(r'D:软件pychardata	est
    ode.zip', 'w')
    33 z.write('笔记1')
    34 z.write('笔记3')
    35 z.close()
    36 
    37 2.2 #追加指定压缩(a)
    38 z = zipfile.ZipFile(r'D:软件pychardata	est
    ode.zip', 'a')
    39 z.write('test.py')
    40 z.write('md_sys_test.py')
    41 z.close()
    42 
    43 
    44 2.3:z.extractall()   解压所有文件:(所有文件)
    45 os.chdir(r"D:软件pychardata	est")
    46 z = zipfile.ZipFile("node.zip",'r')
    47 z.extractall()  
    48 z.close()
    49 
    50 
    51 2.4:z.extract('test.py')  解压指定文件:
    52 只需要传输字符串格式的文件名即可
    53 os.chdir(r"D:软件pychardata	est")
    54 z = zipfile.ZipFile("node.zip",'r')
    55 for item in z.namelist():
    56     if item == 'test.py':
    57         z.extract('test.py')
    58 z.close()
    59 
    60 
    61 
    62 
    63 
    64 =============================================================================================
    65 3、tar单个文件压缩与解压:(tar只打包不压缩)
    66 3.1、写入指定压缩文件(w)
    67 import tarfile
    68 69 tar = tarfile.open(r'D:软件pychardata	estyour.tar','w')
    70 tar.add(r'D:软件pychardata	est	est.py', arcname='bbs2.log')
    71 tar.add(r'D:软件pychardata	estmd_sys_test.py', arcname='cmdb.log')
    72 tar.close()
    73 
    74 3.2、添加指定压缩文件(a)
    75 tar = tarfile.open(r'D:软件pychardata	estyour.tar','a')
    76 tar.add(r'D:软件pychardata	est笔记1', arcname='node1.txt')
    77 tar.add(r'D:软件pychardata	est笔记3', arcname='node3.txt')
    78 tar.close()
    79 
    80 
    81 3.3、解压所有文件
    82 os.chdir(r"D:软件pychardata	est")
    83 tar = tarfile.open('your.tar','r')
    84 tar.extractall()  # 可设置解压地址
    85 tar.close()
    86 
    87 3.4、解压指定文件
    88 tar.getmembers():遍币所有压缩包内的文件对象(非文件字符串)
    89 tar.getmember("node1.txt"):指定压缩包内的某个文件
    90 os.chdir(r"D:软件pychardata	est")
    91 tar = tarfile.open('your.tar','r')
    92 for item in tar.getmembers():
    93     job = tar.getmember("node1.txt")
    94     if item == job:
    95         tar.extract(job)
    96 tar.close()
    复制代码
  • 相关阅读:
    UNION ALL
    jquery.validate的使用
    通过匹配绑定select option的文本值 模糊匹配
    .net 时间操作[摘抄]
    判断Table表中是否含有某一列
    将数组,表的某一列转换为string字符串的方法
    选出某一列不重复,某一列作为选择条件,其他列正常输出(摘抄)
    SQLite 解决:Could not load file or assembly 'System.Data.SQLite ... 试图加载格式不正确的程序(转)
    金山毒霸占用80端口
    DropDownList 绑定数据后 插入一条不属于表中的数据
  • 原文地址:https://www.cnblogs.com/jt925/p/10226600.html
Copyright © 2011-2022 走看看