簡明python教程讀書筆記(二)之為重要檔案備份

2021-09-20 22:58:02 字數 1980 閱讀 5989

一、可行性分析:

一般從經濟、技術、社會、人四個方向分析。

二、需求分析:

需求分析就是需要實現哪些功能,這個很明了-檔案備份

幾個問題:

我們的備份位置?

什麼時間備份?

備份哪些檔案?

怎麼樣儲存備份(檔案型別)?

備份檔案的名稱?(需要通俗明了,一般是以當前時間命名)

三、實施過程:

方案一:

#!/usr/lib/env python

import os

import time

backlist=['/etc','/root']

to='/mnt/'

target=to+time.strftime('%y%m%d%h%m%s')+'.tar.gz'

gz_command="tar -czf %s %s"%(target,' '.join(backlist))

if os.system(gz_command)==0:

print 'successfull'

else:

print 'failed'

改進方案二:

方案二主要是考慮到多建日期子目錄,這樣更加明了

today = target_dir + time.strftime('%y%m%d')

now = time.strftime('%h%m%s')

if not os.path.exists(today):

os.mkdir(today) # make directory

print 'successfully created directory', today

target = today + os.sep + now + '.zip'

zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))

注意:os.sep代表/或者\

改進方案三:可以給備份檔案名稱加註解:

#!/usr/bin/env python

import os

import time

source=['/var/log','/etc/ssh']

target='/mnt/'

today=target+time.strftime('%y%m%d')

now=time.strftime('%h%m%s')

comment=raw_input('pls input the comment-->')

if len(comment)==0:

target1=today+os.sep+now+'.tar.gz'

else:

target1=today+os.sep+now+'_'+comment.replace(' ','_')+'.tar.gz'

if not os.path.exists(today):

os.mkdir(today)

comm="tar -czf %s %s"%(target1,' '.join(source))

if os.system(comm)==0:

print 'successfull'

else:

print 'failed'

方案四:增加互動性

最理想的建立這些歸檔的方法是分別使用zipfile和tarfile模組。它們是python標準庫的一部分,可以

供你使用。使用這些庫就避免了使用os.system這個不推薦使用的函式。這個不推薦的原因今天問了下同事:

os.system是將內容傳給c寫的system函式,由對應系統處理,所以經常會遇到一些空格和引號的問題哈

而且c的system()本身就有一些限制,不更改,所以大家一般習慣於簡單的可以用os.system,複雜的用subprocess.popen。

另外一方面可以通過互動式輸入需要備份的目錄然後用list的extend方法加到列表中去。這裡我是直接把sys.ar**列表的值全部賦值給乙個空列表。'

簡明Python教程(筆記)

只有在形參表末尾的那些引數可以有預設引數值,即你不能在宣告函式形參的時候,先宣告有預設值的形參而後宣告沒有預設值的形參。這是因為賦給形參的值是根據位置而賦值的。例如,def func a,b 5 是有效的,但是def func a 5,b 是 無效的。如果你的某個函式有許多引數,而你只想指定其中的一...

讀書筆記(二)

使用數學函式的時候,大多數需要包含標頭檔案,但是也有特例,例如處理整型數的函式abs函式被包含在標頭檔案中 三角函式和反三角函式,都以弧度為引數,而不是以角度為引數。更加詳細的數學函式可以參考c mathematical functions。維基百科 strcpy strcat函式會改變傳入的字串的...

讀書筆記二

複審 即看 是否在 規範 的框架內正確地解決了問題。形式有 自我複審 同伴複審 團隊複審。目的是 1 找出 錯誤 2 發現邏輯錯誤 3 發現演算法錯誤 4 發現潛在的錯誤和回歸性錯誤 5 發現可能需要改進的地方 6 教育 互相教育 開發人員,傳授經驗,讓更多的成員熟悉專案各部分的 同時熟悉和應用領域...