日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

简明Python教程学习笔记_5_解决问题

發布時間:2024/7/23 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简明Python教程学习笔记_5_解决问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

我提出的問題是: 我想要一個可以為我的所有重要文件創建備份的程序。

盡管這是一個簡單的問題,但是問題本身并沒有給我們足夠的信息來解決它。進一步的分析是必需的。例如,我們如何確定該備份哪些文件?備份保存在哪里?我們怎么樣存儲備份?

在恰當地分析了這個問題之后,我們開始設計我們的程序。我們列了一張表,表示我們的程序應該如何工作。對于這個問題,我已經創建了下面這個列表以說明我 如何讓它工作。如果是你設計的話,你可能不會這樣來解決問題——每個人都有其做事的方法,這很正常。

  • 需要備份的文件和目錄由一個列表指定。

  • 備份應該保存在主備份目錄中。

  • 文件備份成一個zip文件。

  • zip存檔的名稱是當前的日期和時間。

  • 我們使用標準的zip命令,它通常默認地隨Linux/Unix發行版提供。Windows用戶可以使用Info-Zip程序。注意你可以使用任何地存檔命令,只要它有命令行界面就可以了,那樣的話我們可以從我們的腳本中傳遞參數給它。

  • 版本一

    #!/usr/bin/python # Filename: backup_ver4.pyimport os import 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 directory target_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 current day is the name of the subdirectory in the main directory today = target_dir + time.strftime('%Y%m%d') # The current time is the name of the zip archive now = time.strftime('%H%M%S')# Take a comment from the user to create the name of the zip file comment = raw_input('Enter a comment --> ') if len(comment) == 0: # check if a comment was enteredtarget = today + os.sep + now + '.zip' else:target = today + os.sep + now + '_' + \comment.replace(' ', '_') + '.zip'# Notice the backslash!# Create the subdirectory if it isn't already there if not os.path.exists(today):os.mkdir(today) # make directoryprint 'Successfully created directory', today# 5. We use the zip command (in Unix/Linux) to put the files in a zip archive zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))# Run the backup if os.system(zip_command) == 0:print 'Successful backup to', target else:print 'Backup FAILED'

    輸出

    $ python backup_ver4.py Enter a comment --> added new examples Successful backup to /mnt/e/backup/20041208/082156_added_new_examples.zip$ python backup_ver4.py Enter a comment --> Successful backup to /mnt/e/backup/20041208/082316.zip

    它如何工作

    這個程序現在工作了!讓我們看一下版本三中作出的實質性改進。我們使用raw_input函數得到用戶的注釋,然后通過len函數找出輸入的長度以檢驗用戶是否確實輸入了什么東西。如果用戶只是按了回車(比如這只是一個慣例備份,沒有做什么特別的修改),那么我們就如之前那樣繼續操作。

    然而,如果提供了注釋,那么它會被附加到zip歸檔名,就在.zip擴展名之前。注意我們把注釋中的空格替換成下劃線——這是因為處理這樣的文件名要容易得多。

    但是它仍然有進一步改進的空間。比如,你可以在程序中包含 交互 程度——你可以用-v選項來使你的程序更具交互性。

    另一個可能的改進是使文件和目錄能夠通過命令行直接傳遞給腳本。我們可以通過sys.argv列表來獲取它們,然后我們可以使用list類提供的extend方法把它們加到source列表中去。

    我還希望有的一個優化是使用tar命令替代zip命令。這樣做的一個優勢是在你結合使用targzip命令的時候,備份會更快更小。如果你想要在Windows中使用這些歸檔,WinZip也能方便地處理這些.tar.gz文件。tar命令在大多數Linux/Unix系統中都是默認可用的。Windows用戶也可以下載安裝它。

    命令字符串現在將稱為:

    tar = 'tar -cvzf %s %s -X /home/swaroop/excludes.txt'% (target,' '.join(srcdir))

    選項解釋如下:

    • -c表示創建一個歸檔。

    • -v表示交互,即命令更具交互性。

    • -z表示使用gzip濾波器。

    • -f表示強迫創建歸檔,即如果已經有一個同名文件,它會被替換。

    • -X表示含在指定文件名列表中的文件會被排除在備份之外。例如,你可以在文件中指定*~,從而不讓備份包括所有以~結尾的文件。

    重要
    最理想的創建這些歸檔的方法是分別使用zipfile和tarfile。它們是Python標準庫的一部分,可以供你使用。使用這些庫就避免了使用os.system這個不推薦使用的函數,它容易引發嚴重的錯誤。
    然而,我在本節中使用os.system的方法來創建備份,這純粹是為了教學的需要。這樣的話,例子就可以簡單到讓每個人都能夠理解,同時也已經足夠用了。 ?





    總結

    以上是生活随笔為你收集整理的简明Python教程学习笔记_5_解决问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。