代码备份机

案例: 代码备份机

1.打包备份
2. 自动命名
3.大抱歉进行文件筛选,值备份特定文件
4. 定时备份

编程思路:

1.项目:拆解
2.单功能:写函数
3. 多功能:合并类
4 写代码:先写框架,后完善
5.要点: 完成比完美更重要
# 第一步:根据功能设计函数
# 1.打包
def zip_all():
    '''打包'''
    pass
def auto_name():
    '''自动命名'''
    pass
def zip_all_by_name():
    '''筛选文件'''
    pass
# 第二步:完善函数输入参数和返回值,并逐一测试
# 1.打包
import zipfile
import os 

def zip_all(from_dir, target_name):
    '''传入目标目录,打包的名称这两个参数'''
    my_zip = zipfile.ZipFile(target_name,'w')
    for root, dirs, files in os.walk(from_dir):
        for name in files:
            filename = os.path.join(root, name)
            my_zip.write(filename, compress_type=zipfile.ZIP_DEFLATED)
    my_zip.close()
def auto_name(source_name):
    new_name = '1.zip'
    # 判断文件是否存在,单纯if只是判断是否为空
    # 还要进一步判断
    if source_name:   # a-1.zip  a-2.zip
        # split拆分
        new_name = source_name.split('-')[0] + '-' + str(int(source_name.split('-')[1].split('.')[0]) + 1) + '.zip'
    return new_name

base_dir = r'C:\study'
target_name = os.path.join(base_dir, auto_name('c-1.zip'))
from_dir = os.path.join(base_dir, 'jupyter')
zip_all(from_dir, target_name)

coop = zipfile.ZipFile(r'C:\study\c-2.zip')
coop.namelist
# os.chdir(r'C:\study')
# coop.getinfo('c-2.zip')
---------------------------------------------------------------------------

KeyError                                  Traceback (most recent call last)

<ipython-input-4-67f8c6decc4e> in <module>()
     29 coop.namelist
     30 os.chdir(r'C:\study')
---> 31 coop.getinfo('c-2.zip')

c:\users\coop\miniconda3\envs\coop\lib\zipfile.py in getinfo(self, name)
   1279         if info is None:
   1280             raise KeyError(
-> 1281                 'There is no item named %r in the archive' % name)
   1282 
   1283         return info

KeyError: "There is no item named 'c-2.zip' in the archive"
os.getcwd()
'C:\\study'

转载于:https://blog.51cto.com/13118411/2138666

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值