1.zipfile模块

import zipfile   #导入模块
1.压缩文件
(1)创建压缩包 参数1压缩包名字,参数2以w模式创建,参数3压缩固定写法
zf = zipfile.ZipFile("ceshi0512,zip","w",zipfile.ZIP_DEFLATED) (2)把文件写入压缩包中
#起别名的情况,用绝对路径
write(绝对路径,别名)
zf.write(r"E:\python30\day17\ceshi100\1.txt","1.txt")
#可以临时创建一个文件夹tmp
zf.write(r"E:\python30\day17\ceshi100\2.txt","/tmp/2.txt") #不起别名的情况,用相对路径的文件名
zf.write("./3.txt") (3)关闭压缩文件
zf.close()

  

解压压缩包
#参数1压缩包名字,参数2以r的形式解压
zf =zipfile.ZipFile("ceshi05.zip","r") #解压所有文件到ceshi300文件夹,文件夹不存在自动创建
zf.extractall(",/ceshi300") #参数1为指定的文件,参数2为解压后的文件夹,不存在则创建
zf.extrat("1.txt","./ceshi400") #关闭
zf.close()

  

追加文件  a
#如果压缩包不存在,会自动创建并把要追加的文件添加进去
zf = zipfile.ZipFile("ceshi02.zip","a",zip.file.ZIP_DEFLATED)
zf.write(r"E:\pythonproject\python_all\ceshi\ceshi1.txt","1.txt")
zf.close()

  

with语法
with zipfile.ZipFile("ceshi02","a",zipfile.ZIP_DEFLATED) as zf:
#文件名路径,别名
zf.write(r"E:\pythonproject\python_all\ceshi\ceshi1.txt","cs.py")

  

查看文件
with zipfile.ZipFile("ceshi02","r",zipfile.ZIP_DEFLATED) as zf:
res = zf.namelist()
print(res) ##返回的是个列表 里面是压缩包里面的文件名

  

2.tarfile模块

tarfile   包括  .tar |  .tar.gz  |  .tar.bz2
import tarfile #官方说法,tar.bz2的压缩算法,包的大小最小
1.创建tar压缩包 10240
tf = tarfile.open('ceshi02.tar',"w",encoding="utf-8")
#添加文件打包
tf.add(r"E:\pythonproject\python_all\ceshi\ceshi1.txt","1.txt") #路径,别名
tf.close() 2.tar.gz的压缩包 245
tf =tarfile.open("ceshi03.tar.gz","w:gz",encoding="utf-8")
tf.add(r"E:\pythonproject\python_all\ceshi\ceshi1.txt","1.txt") 3.tar.bz2的压缩包 240理论上 压缩出来的最小
tf = tarfile.open("ceshi04.tar.bz2","w:bz2",encoding="utf-8")
tf.add(r"E:\pythonproject\python_all\ceshi\ceshi1.txt","1.txt")

  

解压压缩包
tf = tarfile.open("ceshi01.tar.gz","r",encoding='UTF-8')
tf.extractall("./ceshi200") #全部解压到当前路径的测试200文件夹中
tf.extract("ceshi.txt","./ceshi200") #指定文件解压到当前路径的测试200文件夹中

  

追加文件  a
只能对w模式下的打包进行追加,其他模式不行
with tarfile.open("ceshi2.tar","a",encoding="utf-8") as tf:
tf.add(r"E:\pythonproject\python_all\ceshi\ceshi4.txt","4.txt")
#对于tar.gz 或者 tar.bz2 已经压缩过的包无法追加文件

  

查看压缩包
with tarfile.open("ceshi05.tar","r",encoding="utf-8") as tf:
lst = tf.getnames() #获取的是所有文件名,哪怕有嵌套文件夹
print(lst) #['1.txt', 'tmp/2.txt', '4.py']

  

对tarfile  不能追加的文件的bug  进行优化
'''
tarfile的解决办法 文件或者文件夹都可以通过add方法添加到压缩包
(1) 先解压原来的压缩包
(2) 把要追加的内容放进去
(3) 过滤数据,重新打包
'''
import os
import shutil
import tarfile
#1.先获取当前的路径
pathvar = os.getcwd()
print(pathvar) #2.获取压缩包的路径
pathvar1 =os.path.join(pathvar,"ceshi03.tar,bz2")
print(pathvar1) #3.获取解压后文件夹的路径
pathvar2 =os.path,join(pathvar,"ceshi03")
print(pathvar2) #4.先把压缩包解压
with tarfile.open(pathvar1,"r",encoding="utf-8") as tf:
tf.extractall(pathvar2) #5.把追加的内容放到解压后的文件夹中
shutil.copy(r"E:\pythonproject\python_all\ceshi\login.py",pathvar2) #6.重新打包
lst = os.listdir(pathvar2)
print(lst) #['1.txt', '2.txt', 'ceshi4.txt', 'login.py'] #重新打包进压缩包
with tarfile.open(pathvar2,"a",encoding="utf-8") as tf:
for i in lst: #循环列表
newpath = os.path.join(pathvar2,i) #拼接解压路径跟文件名
print(newpath)
tf.add(newpath,i) #写入追加 路径,别名

  

3.包和模块

包部分
import 导入包 1.文件就是一个模块,文件夹就是一个包,文件夹里面可以有很多文件,就相当于包里面有很多模块 2.__init__.py 对包(文件夹)进行初始化的脚本文件,导入包的时候,系统自动调用__init__文件,当前文件夹进行初始化,实际上就是对init中的文件属性进行导入 3.这个包下的其他模块可以通过初始化文件间接导入 #1.导入包,通过init文件初始化,默认引入init文件中的所有属性
#__init__文件中已经写入
'''
#指定*号的范围
__all__ = ["ceshi001"] ceshi001 = 1
ceshi002 = 2
ceshi003 = 3
#在初始化时,指定这个文件夹中的哪些模块进行导入 方法二
from package1 import mypath
''' #import package1
#print(package1.ceshi003) #2.引入包当中具体的一个模块
#方法一
#import package1.mypath
#package1.mypath.join() #起别名
#import package1.mypath as pm
#pm.mypath.join() #方法二(通过init文件间接导入,更加间接)
#import package1
#package1.mypath.join() # ### 2.用from..import 从包导入成员(落脚点在模块或者成员)
#1.包.模块.成员
#from package1 import ceshi001
#print(ceshi001) #from package1 import mypath
#mypath.getsize() #from package1.mypath import getsize
#getsize() #2.起别名
#from package1.mypath import ceshi004 as c4,ceshi005 as c5
#print(c4,c5) #3.导入所有
'''
可以在init文件中指定*号的范围
from package1 import *
#print(ceshi002)
print(ceshi001)
''' # ### 3.单入口模式(相对路径导入)
import package2.pkg1.pkg1_modules as pppm
#print(pppm,ceshi100)

  

模块部分
import 导入 '''
# 导入一次,终身受益,不会重复导入
'''
import mymodule
#import mymodule #1.模块.变量
#print(mymodule.xboy) #2.模块.函数
#mymodule.dog() #3.模块,类
#print(mymodule.Car().color) # ### 2.导入任意路径下的模块
'''
默认只能导入当前文件所在的这个文件夹下的所有模块
通过sys.path 可以导入任意路径下的模块
导入模块时 -> 会去找sys.path这个列表里面的路径,如果找到就能导入,找不到就报错
通过append可以在列表里面追加路径,来实现导入的功能
'''
import sys
print(sys.path)
sys.path.append(r"E:\python30\day16")
'''
# \\ => \ 为了防止转义
[
'E:\\python30\\day17\\import_bao',
'E:\\aaabbb',
'E:\\aaabbb\\venv\\Scripts\\python36.zip',
'C:\\Users\\wangwen\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\wangwen\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\wangwen\\AppData\\Local\\Programs\\Python\\Python36',
'E:\\aaabbb\\venv', 'E:\\aaabbb\\venv\\lib\\site-packages', 'E:\\aaabbb\\venv\\lib\\site-packages\\setuptools-40.8.0-py3.6.egg',
'E:\\aaabbb\\venv\\lib\\site-packages\\pip-19.0.3-py3.6.egg',
E:\python30\day16
]
执行命令 -> 找路径 -> 执行对应的文件
环境变量
'''
import mymodule2
print(mymodule2.a)
print(mymodule2.b) # 起别名
'''
import mymodule2 as m2
print(m2.a)
print(m2.b)
''' # ### 3.from ... import ... 从...导入 #导入单个
'''
from mymodule import xboy
print(xboy)
''' #导入多个
'''
from mymodule import xboy,xgirl,dog
print(xboy)
dog()
''' #导入所有 * (代表所有)
'''
from mymodule import *
cat()
'''
#起别名
'''
from mymodule import xboy as xb,xgirl as xg
print(xb)
print(xg)
''' #定义*号的范围
'''
from mymodule import * #可以在mymodule中设置 __all__ = ['dog']
print(xboy) #报错
dao()
''' # ### 4.__name__
'''
返回模块名字的魔术属性__name__
如果当前文件是直接运行的,返回__main__
如果当前文件是间接运行的,返回当前文件名(模块名)
'''

  

4.format格式化复习

#强制指定参数类型
strvar ="{:s}".format("天照") #关键字传参
strvar ="{who}".format(who="天照") #关键字传参,并且指定类型
strvar = "{who:s}".format(who="天照") #关键字传参,并且指定类型,并且填充字符
strvar ="{who:*^10s}".format(who="天照") #****天照**** #容器类型传参
dic = {"name":"天照"}
strvar = "{dic[name]}".format(dic=dic) #容器类型传参,并且指定类型,并且填充字符
dic = {"name":"天照"}
strvar = {dic[name]:*^10s}.format(dic=dic) #容器类型传参,并且填充字符串
dic = {"name":"天照"}
strvar = "{dic[name]:*<10}".format(dic=dic) #原字符居左 #容器类型传参,并且填充字符, #原字符串居右
dic = {"name":"天照"}
strvar = "{dic[name]:>10}".format(dic=dic) # 建中

  

zip压缩模块,tarfile压缩模块,包和模块,format格式化的复习--day17的更多相关文章

  1. Perl包和模块(内容来自beginning perl)

    单文件版的perl程序只能用于构建较小的脚本程序.当代码规模较大时,应该遵循下面两条规则来构建程序.这样能将程序的各个部分按功能一个一个地细化,便于维护,也便于后续开发. 能复用的代码放进函数 能复用 ...

  2. python 包和模块

    一. 模块 使用内置函数vars()可以查看当前环境下有哪些对象(变量.函数.类) from 模块 import *: 不会导入以下划线开头的对象 只会导入__all__中定义了的对象(__all__ ...

  3. Python 包、模块、函数、变量作用域

    Python 项目的组织结构 - 包 -- 模块 --- 类 ---- 函数.变量   Python是利用包和模块来组织一个项目的.   包: 包的物理表现是一个文件夹,但是一个文件夹却不一定是个包, ...

  4. s14 第5天 时间模块 随机模块 String模块 shutil模块(文件操作) 文件压缩(zipfile和tarfile)shelve模块 XML模块 ConfigParser配置文件操作模块 hashlib散列模块 Subprocess模块(调用shell) logging模块 正则表达式模块 r字符串和转译

    时间模块 time datatime time.clock(2.7) time.process_time(3.3) 测量处理器运算时间,不包括sleep时间 time.altzone 返回与UTC时间 ...

  5. Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)

    OS模块 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname")  改变当前脚本工作目 ...

  6. 模块 shutil_zipfile_tarfile压缩解压

    shutil_zipfile_tarfile压缩解压 shutil 模块 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length]) #将 ...

  7. Linux下打包压缩war和解压war包 zip和jar

    ============jar================= 把当前目录下的所有文件打包成game.warjar -cvfM0 game.war ./ -c   创建war包-v   显示过程信息 ...

  8. python用模块zlib压缩与解压字符串和文件的方法

    摘自:http://www.jb51.net/article/100218.htm Python标准模块中,有多个模块用于数据的压缩与解压缩,如zipfile,gzip, bz2等等. python中 ...

  9. python 库 、包 、模块

    概念: 模块: 模块是一种以.py为后缀的文件,在.py文件中定义了一些常量和函数.模块的名称是该.py文件的名称.模块的名称作为一个全局变量__name__的取值可以被其他模块获取或导入. 模块的导 ...

  10. day19:os模块&shutil模块&tarfile模块

    os模块:对系统进行操作(6+3) system  popen  listdir  getcwd  chdir  environ / name  sep  linesep import os #### ...

随机推荐

  1. 【转帖】16.JVM栈帧内部结构-局部变量表

    目录 1.局部变量表(Local variables) 1.局部变量表(Local variables) 1.局部变量表也称为局部变量数组或本地变量表. 2.局部变量表定义为一个数字数组,主要用于存储 ...

  2. [转帖]xfs_repair命令详解

    https://bbs.qunyingkeji.com/2052/ 1.现状 目前网上出现大量的主机输入输出错误,原因是由于主机文件系统损坏.一线人员大部分采用的是umont 和 mount的方式恢复 ...

  3. [转帖]Linux下strace调试系统应用参数总结(附实例操作讲解)

    文章目录 一.简介 二.常用参数详解 三.实例详解 3.1 跟踪具体进程 3.2 监控具体程序执行过程 四.其他相关知识链接 一.简介 strace命令是一个集诊断.调试.统计与一体的Linux 用户 ...

  4. [转帖]从v8到v9,Arm服务器发展之路

    https://zhuanlan.zhihu.com/p/615344155   01 ARM:3A大作 将 CPU 的设计与制造相分离的代工模式,给 AMD 提供了高度的灵活性.第二.三代 EPYC ...

  5. [转帖]拜托!面试请不要再问我Spring Cloud底层原理

    https://www.cnblogs.com/jajian/p/9973555.html 概述# 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大 ...

  6. 根目录被赋予777 -R权限后的处理过程

    解决某研发手残导致的系统宕机问题的处理过程 背景 2022.8.8 公司一台服务器出现了宕机的现象: 所有的人都无法远程, 都提示密码错误. 但是网络还是通的. 2022.8.12 出差前一天去了一趟 ...

  7. iperf的学习与部分网络状况的简要总结

    背景 随着信息安全的越来越重要,公司要求进行数据备份. 部分客户现场交付之前需要进行性能压测,但是因为各种环境问题效果不是很理想. 前段时间疫情严重,经常需要居家办公,出现了很多网络相关的问题. 因为 ...

  8. 从源代码构建TensorFlow流程记录

    京东科技隐私计算产品部 曹雨晨 为什么从源代码构建 通常情况下,直接安装构建好的.whl即可.不过,当需要一些特殊配置(或者闲来无事想体会 TensorFlow 构建过程到底有多麻烦)的时候,则需要选 ...

  9. vue3中watch监听不是你想的那样简单

    vue3 中watch监听数组,数组变化后未触发回调 今天发生了一个很神奇的现象,就是我使用watch监听数组时. 被监听的数组已经发生了变化.但是没有触发回调操作. 当时的我感到很疑惑? 不应该呀? ...

  10. vue3关于.sync的用法

    场景描述 我们都知道,子组件是不能够去修改父组件传递过来的数据. 因为如果子组件去修改父组件件传递过来的数据. 会导致数据的应用流向变得难以理解. 但是有些时候,我们需要当子组件的数据变化后,父组件的 ...