import tarfile
"""官方说法, .tar.bz2 的压缩算法,包的大小最小."""
tf = tarfile.open("ceshi0513.tar","w",encoding="utf-8")
tf.add(r"E:\python30\day17\ceshi100\1.txt","1.txt")
tf.add(r"E:\python30\day17\ceshi100\2.txt","222")
tf.add(r"E:\python30\day17\ceshi100\3.py","/tmp/3.py")
tf.close()
tf = tarfile.open("ceshi0514.tar.gz","w:gz",encoding="utf-8")
tf.add(r"E:\python30\day17\ceshi100\1.txt","1.txt")
tf.add(r"E:\python30\day17\ceshi100\2.txt","222")
tf.add(r"E:\python30\day17\ceshi100\3.py","/tmp/3.py")
tf.close()
tf = tarfile.open("ceshi0515.tar.bz2","w:bz2",encoding="utf-8")
tf.add(r"E:\python30\day17\ceshi100\1.txt","1.txt")
tf.add(r"E:\python30\day17\ceshi100\2.txt","222")
tf.add(r"E:\python30\day17\ceshi100\3.py","/tmp/3.py")
tf.close()
"""
import zipfile
# (1) 创建压缩包 345
zf = zipfile.ZipFile("ceshi0512.zip","w",zipfile.ZIP_DEFLATED)
zf.write(r"E:\python30\day17\ceshi100\1.txt","1.txt")
zf.write(r"E:\python30\day17\ceshi100\2.txt","222")
zf.write(r"E:\python30\day17\ceshi100\3.py","/tmp/3.py")
zf.close()
"""
tf = tarfile.open("ceshi0514.tar.gz","r",encoding="utf-8")
tf.extract("222","ceshi600")
tf.close()
"""只能对w模式下的打包进行追加,其他的模式不行"""
with tarfile.open("ceshi0513.tar","a",encoding="utf-8") as tf:
tf.add(r"E:\python30\day17\ceshi100\4.php","4.php")
"""
with tarfile.open("ceshi0514.tar.gz","a",encoding="utf-8") as tf:
tf.add(r"E:\python30\day17\ceshi100\4.php","4.php")
"""
with tarfile.open("ceshi0513.tar","r",encoding="utf-8") as tf:
lst = tf.getnames()
print(lst)
"""
tarfile 的解决方法 文件或者文件夹都可以通过add放到压缩包中
(1) 先解压原来的压缩包
(2) 把要追加的内容放进去
(3) 过滤数据,重新打包
"""
import os
pathvar = os.getcwd()
print(pathvar)
pathvar1 = os.path.join(pathvar,"ceshi0515.tar.bz2")
print(pathvar1)
pathvar2 = os.path.join(pathvar,"ceshi0515")
print(pathvar2)
with tarfile.open(pathvar1,"r",encoding="utf-8") as tf:
tf.extractall(pathvar2)
import shutil
shutil.copy(r"E:\python30\day17\ceshi100\4.php",pathvar2)
"""过滤掉222这个文件,剩下的文件重新打包"""
lst = os.listdir(pathvar2)
print(lst)
with tarfile.open(pathvar1,"w:bz2",encoding="utf-8") as tf:
for i in lst:
pathnew = os.path.join(pathvar2,i)
print(pathnew)
if i != "222":
tf.add(pathnew,i)
import zipfile
zf = zipfile.ZipFile("ceshi0512.zip","w",zipfile.ZIP_DEFLATED)
zf.write(r"E:\python30\day17\ceshi100\1.txt","1.txt")
zf.write(r"E:\python30\day17\ceshi100\2.txt","2.txt")
zf.write(r"E:\python30\day17\ceshi100\3.py","/tmp/3.py")
zf.close()
zf = zipfile.ZipFile("ceshi0512.zip","r")
zf.extract("1.txt","./ceshi400")
zf.close()
zf = zipfile.ZipFile("ceshi0512.zip","a",zipfile.ZIP_DEFLATED)
zf.write(r"E:\python30\day17\ceshi100\4.php","4.py")
zf.close()
with zipfile.ZipFile("ceshi0512.zip","a",zipfile.ZIP_DEFLATED) as zf:
zf.write(r"E:\python30\day17\ceshi100\4.php","6666.py")
with zipfile.ZipFile("ceshi0512.zip","r",zipfile.ZIP_DEFLATED) as zf:
lst = zf.namelist()
print(lst)
import json
import time
money = 0
goods_lst = []
car = {}
"""
car = {
1:{电脑... }
2:{鼠标...}
}
"""
with open("shopping_data.json", mode="r+", encoding="utf-8") as fp:
for i in fp:
dic = json.loads(i)
goods_lst.append(dic)
print(goods_lst)
"""
[
0 {'name': '电脑', 'price': 1999}, 1
1 {'name': '鼠标', 'price': 10}, 2
2 {'name': '游艇', 'price': 20}, 3
3 {'name': '美女', 'price': 998}, 4
4 {'name': '风油精', 'price': 30} 5
]
"""
def progress(percent):
if percent > 1:
percent = 1
strvar = int(50 * percent) * "#"
print("\r[%-50s] %d%%" % (strvar, int(100 * percent)), end="")
def exe_progress():
recv_size = 0
total_size = 1028000
while recv_size < total_size:
time.sleep(0.01)
recv_size += 6000
percent = recv_size / total_size
progress(percent)
def recharge():
global money
while True:
num = input("请充值吧,大哥")
if num.isdecimal():
print("恭喜你~ 充值成功{}元人民币".format(num))
break
else:
print("充值失败,非数字.")
def loading():
print("加载商品中 ... ")
exe_progress()
print()
def show_goods():
strvar = "{}".format("商品名称").center(18)
print("序号" + strvar + "价格")
for k, v in enumerate(goods_lst, start=1):
v['num'] = k
strvar = "{v[num]:<10}{v[name]:<12}{v[price]}".format(v=v)
print(strvar)
def error():
strvar = """
**************************************************
* 您输入的选项不存在 , 请重新输入 *
**************************************************
"""
print(strvar)
time.sleep(1)
def add_car(num):
if num not in car:
car[num] = {
"name": goods_lst[num - 1]["name"],
"price": goods_lst[num - 1]["price"],
"account": 1
}
else:
car[num]["account"] += 1
print(car)
"""
{
序号: 商品描述(字典形式展现)
2: {'name': '鼠标', 'price': 10, 'account': 1},
3: {'name': '游艇', 'price': 20, 'account': 1}
}
"""
def show_car(num):
print("*" * 50)
print("您选择的商品具体信息:")
print("*-商品名称:{}".format(car[num]["name"]))
print("*-商品单价:{}".format(car[num]["price"]))
print("*-商品数量:{}".format(car[num]["account"]))
print("已成功添加到购物车~ 请继续shopping ~")
print("*" * 50)
def main():
recharge()
loading()
show_goods()
sign = True
while sign:
num = input("请输入您要购买的商品:")
if num.isdecimal():
num = int(num)
add_car(num)
show_car(num)
elif num.upper() == "N":
pass
elif num.upper() == "Q":
pass
else:
error()
main()