我們已經研究了Python語言的眾多內容,現在我們將來學習一下怎麼把這些內容結合起來。我們將設計編寫一個能夠 做 一些確實有用的事情的程式。
問題
我提出的問題是: 我想要一個可以為我的所有重要檔案建立備份的程式。
儘管這是一個簡單的問題,但是問題本身並沒有給我們足夠的資訊來解決它。進一步的分析是必需的。例如,我們如何確定該備份哪些檔案?備份儲存在哪裡?我們怎麼樣儲存備份?
在恰當地分析了這個問題之後,我們開始設計我們的程式。我們列了一張表,表示我們的程式應該如何工作。對於這個問題,我已經建立了下面這個列表以說明 我 如何讓它工作。如果是你設計的話,你可能不會這樣來解決問題——每個人都有其做事的方法,這很正常。
需要備份的檔案和目錄由一個列表指定。
備份應該儲存在主備份目錄中。
檔案備份成一個zip檔案。
zip存檔的名稱是當前的日期和時間。
我們使用標準的zip命令,它通常預設地隨Linux/Unix發行版提供。Windows使用者可以使用Info-Zip程式。注意你可以使用任何地存檔命令,只要它有命令列介面就可以了,那樣的話我們可以從我們的指令碼中傳遞參數給它。
解決方案
當我們基本完成程式的設計,我們就可以編寫代碼了,它是對我們的解決方案的實施。
版本一
例10.1 備份指令碼——版本一
#!/usr/bin/python# Filename: backup_ver1.pyimport osimport time# 1. The files and directories to be backed up are specified in a list.source = ['/home/swaroop/byte', '/home/swaroop/bin']# If you are using Windows, use source = [r'C:\Documents', r'D:\Work'] or something like that# 2. The backup must be stored in a main backup directorytarget_dir = '/mnt/e/backup/' # Remember to change this to what you will be using# 3. The files are backed up into a zip file.# 4. The name of the zip archive is the current date and timetarget = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'# 5. We use the zip command (in Unix/Linux) to put the files in a zip archivezip_command = "zip -qr '%s' %s" % (target, ' '.join(source))# Run the backupif os.system(zip_command) == 0: print 'Successful backup to', targetelse: print 'Backup FAILED'
(源檔案:code/backup_ver1.py)
輸出
$ python backup_ver1.py
Successful backup to /mnt/e/backup/20041208073244.zip
現在,我們已經處於測試環節了,在這個環節,我們測試我們的程式是否正確工作。如果它與我們所期望的不一樣,我們就得調試我們的程式,即消除程式中的 瑕疵 (錯誤)。
它如何工作