zip压缩模块,tarfile压缩模块,包和模块,format格式化的复习--day17
1.zipfile模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 3 4 5 6 7 8 9 10 11 12 | 解压压缩包 #参数1压缩包名字,参数2以r的形式解压 zf = zipfile.ZipFile( "ceshi05.zip" , "r" ) #解压所有文件到ceshi300文件夹,文件夹不存在自动创建 zf.extractall( ",/ceshi300" ) #参数1为指定的文件,参数2为解压后的文件夹,不存在则创建 zf.extrat( "1.txt" , "./ceshi400" ) #关闭 zf.close() |
1 2 3 4 5 | 追加文件 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() |
1 2 3 4 | with语法 with zipfile.ZipFile( "ceshi02" , "a" ,zipfile.ZIP_DEFLATED) as zf: #文件名路径,别名 zf.write(r "E:\pythonproject\python_all\ceshi\ceshi1.txt" , "cs.py" ) |
1 2 3 4 | 查看文件 with zipfile.ZipFile( "ceshi02" , "r" ,zipfile.ZIP_DEFLATED) as zf: res = zf.namelist() print (res) ##返回的是个列表 里面是压缩包里面的文件名 |
2.tarfile模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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" ) |
1 2 3 4 | 解压压缩包 tf = tarfile. open ( "ceshi01.tar.gz" , "r" ,encoding = 'UTF-8' ) tf.extractall( "./ceshi200" ) #全部解压到当前路径的测试200文件夹中 tf.extract( "ceshi.txt" , "./ceshi200" ) #指定文件解压到当前路径的测试200文件夹中 |
1 2 3 4 5 | 追加文件 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 已经压缩过的包无法追加文件 |
1 2 3 4 | 查看压缩包 with tarfile. open ( "ceshi05.tar" , "r" ,encoding = "utf-8" ) as tf: lst = tf.getnames() #获取的是所有文件名,哪怕有嵌套文件夹 print (lst) #['1.txt', 'tmp/2.txt', '4.py'] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 对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.包和模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 包部分 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) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 模块部分 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格式化复习
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #强制指定参数类型 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) # 建中 |
__EOF__

本文作者:404 Not Found
本文链接:https://www.cnblogs.com/weiweivip666/p/12934719.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
本文链接:https://www.cnblogs.com/weiweivip666/p/12934719.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
-------------------------------------------
个性签名:代码过万,键盘敲烂!!!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人