現在有一個需求:把某個目錄下的文件備份到指定到另外一個目錄下,而且壓縮后文件為zip文件
# -*- coding:utf-8 -*-
#! /usr/bin/python
# Filename:backup_v1.py
import os
import time
source = [r'H:\StudyLib\lib']
# 源文件目錄,是個列表,可以放入多個目錄
target_dir = 'I:\\backpacks\\'
# 目標目錄
target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'
# 目標zip文件
zip_commend = "zip -qr %s %s" % (target, ' '.join(source))
# zip命令字符串
print zip_commend
#輸出命令行測試
if os.system(zip_commend) == 0:
# 執行zip命令,若返回0,則說明正確備份
print 'Successful backup to ' ,target
else:
print 'backup failed'
上面的注釋寫的挺詳細的了,我們需要注意的由兩點:
一個是windows不會自帶zip壓縮程序,需要我們自己下載,並把環境變量配置正確,
另一個如果沒有在頭部聲明編碼的話會出現中文編碼的問題,一定要寫在第一行
這個版本其實只是把源文件和目標文件規定了一下,並沒有任何優化操作
第一個優化:
可以在我們的目標目錄中建立一級和二級目錄,一級目錄名稱就為年月日,這樣在每次做備份的時候,可以確保一天只建立一個文件夾(如果存在就不用創建新的文件夾了)
# -*- coding:utf-8 -*-
#! /usr/bin/python
# Filename:backup_v1.py
import os
import time
source = [r'H:\StudyLib\lib']
# 源文件目錄,是個列表,可以放入多個目錄
target_dir = 'I:\\backpacks\\'
# 目標目錄
today = target_dir + time.strftime('%Y%m%d')
# 目標文件夾的一級目錄
now = time.strftime('%H%M%S')
# 目標文件夾的二級目錄
if not os.path.exists(today):
os.mkdir(today)
print 'Successful create directory',today
# 如果目錄不存在則創建
target = today + os.sep + now + '.zip'
# 目標文件
zip_commend = "zip -qr %s %s" % (target, ' '.join(source))
# zip命令字符串
print "執行命令:" +zip_commend
#輸出命令行測試
if os.system(zip_commend) == 0:
# 執行zip命令,若返回0,則說明正確備份
print 'Successful backup to ' ,target
else:
print 'backup failed'
