1. 程式人生 > >代碼備份機

代碼備份機

os.path wal str raise 文件是否存在 返回 eba int 輸入參數

案例: 代碼備份機

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‘

代碼備份機