zip压缩模块,tarfile压缩模块,包和模块,format格式化的复习--day17
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的更多相关文章
- Perl包和模块(内容来自beginning perl)
单文件版的perl程序只能用于构建较小的脚本程序.当代码规模较大时,应该遵循下面两条规则来构建程序.这样能将程序的各个部分按功能一个一个地细化,便于维护,也便于后续开发. 能复用的代码放进函数 能复用 ...
- python 包和模块
一. 模块 使用内置函数vars()可以查看当前环境下有哪些对象(变量.函数.类) from 模块 import *: 不会导入以下划线开头的对象 只会导入__all__中定义了的对象(__all__ ...
- Python 包、模块、函数、变量作用域
Python 项目的组织结构 - 包 -- 模块 --- 类 ---- 函数.变量 Python是利用包和模块来组织一个项目的. 包: 包的物理表现是一个文件夹,但是一个文件夹却不一定是个包, ...
- 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时间 ...
- Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)
OS模块 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目 ...
- 模块 shutil_zipfile_tarfile压缩解压
shutil_zipfile_tarfile压缩解压 shutil 模块 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length]) #将 ...
- Linux下打包压缩war和解压war包 zip和jar
============jar================= 把当前目录下的所有文件打包成game.warjar -cvfM0 game.war ./ -c 创建war包-v 显示过程信息 ...
- python用模块zlib压缩与解压字符串和文件的方法
摘自:http://www.jb51.net/article/100218.htm Python标准模块中,有多个模块用于数据的压缩与解压缩,如zipfile,gzip, bz2等等. python中 ...
- python 库 、包 、模块
概念: 模块: 模块是一种以.py为后缀的文件,在.py文件中定义了一些常量和函数.模块的名称是该.py文件的名称.模块的名称作为一个全局变量__name__的取值可以被其他模块获取或导入. 模块的导 ...
- day19:os模块&shutil模块&tarfile模块
os模块:对系统进行操作(6+3) system popen listdir getcwd chdir environ / name sep linesep import os #### ...
随机推荐
- [转帖]NGINX 局限太多,Cloudflare 最终放弃它并用 Rust 自研了全新替代品
https://www.infoq.cn/news/s2fa603MsEENsCmibTYI 长期以来,NGINX 可以说是网站安全和托管服务提供商 Cloudflare 的核心,是其所使用的基础软件 ...
- Redisson/Jedis 线程数不足报错问题的思考
Redisson/Jedis 线程数不足报错问题的思考 背景 最近公司内总出现 Redis相关的错误 !-_-! 看我最近发的博客就可以看的出来. 这个错误提示其实是 两年前 清明节进行 压测时发现的 ...
- [转帖]shell 实现行转列、列转行的几种方法
目录 shell 实现行转列.列转行的几种方法 awk 行转列 xargs 行转列 tr 列转行 参考资料 shell 实现行转列.列转行的几种方法 awk 行转列 以空格为分隔符 awk -F &q ...
- Linux时间戳转换成易读格式的方法
背景 最近一直在学习Redis相关的知识. 其中遇到了一个redis monitor的命令 但是这里有一个问题是: 原生命令查询出来的时间是Unix时间戳格式的. 不太好发现查看与进行对照. 所以今天 ...
- vue3中mixins的使用
vue3-mixins 在开发的过程中我们会遇见相同或者相似的逻辑代码. 可以通过vue的 mixin 功能抽离公共的业务逻辑, 然后通过impor再组件中引入.通过mixins注册进来. 这样我们就 ...
- vulnhub靶场渗透学习
攻击机:192.168.100.251 目标机:192.168.100.17 netdiscover netdiscover -r 192.168.100.1/24 Currently scannin ...
- Gorm实战,轻松掌握数据库增删改查技巧!
Gorm实战,轻松掌握数据库增删改查技巧! CRUD通常指数据库的增删改查操作,本文详细介绍了如何使用GORM实现创建.查询.更新和删除操作. 目录 Gorm实战,轻松掌握数据库增删改查技巧! 一.C ...
- 在vscode中运行bat文件(执行bat)并解决中文乱码问题
使用vscode编写bat脚本让工作流得到了极大的改善 以前:在文本编辑器中写完,保存,回到资源管理器双击bat运行,再循环重复 现在:在vscode中编写bat,按下快捷键执行bat 在vscode ...
- 通过Demo学WPF—数据绑定(一)✨
前言 想学习WPF,但是看视频教程觉得太耗时间,直接看文档又觉得似懂非懂,因此想通过看Demo代码+文档的方式进行学习. 准备 微软官方其实提供了WPF的一些Demo,地址为:microsoft/WP ...
- Paddlenlp之UIE分类模型【以情感倾向分析新闻分类为例】含智能标注方案)
相关文章: Paddlenlp之UIE模型实战实体抽取任务[打车数据.快递单] 项目连接:百度AIstudio直接fork我的项目就可以复现 Paddlenlp之UIE分类模型[以情感倾向分析新闻分类 ...