python備份
① python簡明教程(python3 版本),文件備份的案例老是運行錯誤
這一句話改成如下,在python中,list只讀類型不能用+號連接
target = str(target_dir) + str(os.sep) + str(time.strftime('%Y%m%d%H%M%S')) + '.zip'
② Python是什麼
1、Python 介紹
學習一門新的語言之前,首先簡單了解下這門語言的背景。Python 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人 Guido van Rossum 於 1989 年基鄭發明,第一個公開發行版發行於 1991 年。Python 在設計上堅持了清晰劃一的風格,這使得 Python 成為一門易讀、易維護,並且被大量用戶所歡迎的、用途廣泛的語言。Python 具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是 C/C++)很輕松地聯結在一起。
2、Python 技術浪潮
IT行業熱門技術,更新換代非常的快,技術的浪潮一波接著一波,最初的浪潮無疑是桌面時代,使用 C# 搭建桌面應用開始嶄露頭角,MFC 還是計算機科學專業必學會的東西。接著就是以網站搭建為應用的背景,PHP,Ruby 等語言為主的。再到近幾年非常火熱的以移動開發為應用背景,Java(Android 開發)或者 OC(iOS 開發)語言為主。搏如頌很明顯如今的浪潮就是以大數據和機器學習為應用背景,Python 語言為主。站在風尖浪口,豬都可以飛的起來。抓住這波技術浪潮,對於從事 IT 行業的人員來說有莫大的幫助。
3、Python 學習
學習一項新的技術,起步時最重要的是什麼?就是快速入門。學習任何一個學科的知識時,都有一個非常重要的概念:最少必要知識。當需要獲得某項技能的時候,一定要想辦法在最短的時間里弄清楚都有哪些最少必要知識,然後迅速掌握它們。
對於快速入門 python 來說最少必要知識,有以下幾點。
(1) Python 基礎語法
找一本淺顯易懂,例子比較好的教程,從頭到尾看下去。不要看很多本,專注於一本。把裡面的常式都手打一遍,搞懂為什麼。推薦去看《簡明python教程》,非常好的一本 Python 入門書籍。
(2)Python 實際項目
等你對 Python 的語法有了初步的認識,就可以去找些 Python 實際項目來練習。對於任何計算機編程語言來說,以實際項目為出發點,來學習新的技術,是非常高效的學習方式。在練習的過程中你會遇到各種各樣的問題:基礎的語法問題(關鍵字不懂的拼寫),代碼毫無邏輯,自己的思路無法用代碼表達出來等等。這時候針對出現的問題,找到對應解決辦法,比如,你可以重新查看書本上的知識(關於基礎語法問題),可以通過谷歌搜索碰到的編譯錯誤(編輯器提示的錯誤),學習模仿別人已有的代碼(寫不出代碼)等等。已實際項目來驅動學習,會讓你成長非常的快。Python 實際項目網上非常的多,大家可以自己去搜索下。合理利用網路資源,不要意味的只做伸手黨。
(3) Python 的學習規劃
當你把上面兩點做好以後,你就已經入門了 Python,接下來就是規劃好自己的以後的學習規劃。能找到一個已經會 Python 的人。問他一點學習規劃的建議,然後在遇到卡殼的地方找他指點。這樣會事半功倍。但是,要學會搜索,學會如何更好地提問,沒人會願意回答顯而易見的問題。當然如果你身邊沒有人會 Python,也可以在網上搜索相應的資料。
Python 可以做的事非常的多,比如:Python 可以做日常任務,比如自動備份你的MP3;可以橡穗做網站,很多著名的網站像知乎、YouTube 就是 Python 寫的;可以做網路游戲的後台,很多在線游戲的後台都是 Python 開發的。每個人都有自己感興趣的方向,有的對網站開發比較感興趣,有的對數據處理感興趣,有的對後台感興趣。所以你們可以根據自己感興趣的方向,網上搜索相關資料,加以深入的學習,規劃好自己未來的方向。只要堅持,你就能精通 Python,成為未來搶手的人才。
③ python 腳本實現自動配置iOS工程證書文件
在實現iOS項目的自動打包工程中,我們需要配置好工程的證書文件信息,為了能夠自動的根據bundle id來設置不同的profile文件,我們可以通過腳本文件來修改工程的projext.pbxproj文件幫助我們進行自動設置。
1. Project.pbxproj
Xcode項目中的xxx.xcodeproj其實是一個文件夾,右鍵單擊xxx.xcodeproj,顯示包內容:
Project.pbxproj的解析
關於這個配置文件的結構,請參考 project.pbxproj,最熟悉的」陌生人 (http://www.olinone.com/?p=215),解析該文件可以使用現有的解析工具mod-pbxproj,該工具是一個python的腳本。其github地址為: https://github.com/kronenthaler/mod-pbxproj 。
為了修改不同taget的profile,我們需要知道這些配置在文件中的具體位置,不難發現:
我們的目標是為不同的bundle id設置不同的profile,所以只需要找到不同target的XCBuildConfiguration,修改其中PROVISIONING_PROFILE的值即可。通過分析project.pbxproj文件結構,你會發現其找到這些target的buildSettings的路徑如下:
rootObject=> PBXNativeTarget=> XCConfigurationList=> XCBuildConfiguration。
XCBuildConfiguration會有Debug和Release兩個版本,這里我們以修改Release版本的為例進行說明。
2. Python腳本修改profile
需要在工程目錄下配置如下腳本文件,通過從json文件中讀取配置信息,然後根據不同的bundle id來設置不同的profile文件和其他欄位信息。其中xcode_configurator_profile.py為修改profile的腳本文件,profile.json為配置的證書信息。demo如下圖所示:
首先在profile.json文件中配置好bundle id和對應的profile文件,如下如所示:
然後在工程目錄下執行xcode_configurator_profile.py:
檢查profile修改結果:
如果設置了以後有任何問題, 你可以在對應的xxx.xcodeproject下找到對應的備份。
④ 如何將資料庫備份到阿里雲的OSS上
第一步:將我們資料庫備份到某目錄下,註明時間:
運行備份腳本(注意在備份目錄下,我的在/home/dbback/下)
查看目錄是否生成備份文件,心細的同學可能發現我這個mysqlmp沒有指定用戶名和密碼,為啥我運行的時候費用輸入密碼呢?莫著急,馬上為你揭曉答案,因為mysql5.6後(具體版本編號不記得了),如果你把密碼寫到腳本里,運行會有警告,告訴你不要把密碼寫到腳本里,會有危險,那我的小夥伴該怎麼辦呢,官方給了解決方案,期望你是配置到my.cnf文件中,所以,現在打開你的my.cnf,加入如下欄位:
有了以上這兩條,運行腳本時就不會在提示要輸入密碼了,馬上測試下,看是否成功,如果沒問題,我們進入下一步。
第二步:如何自動備份到oss中,開始前我們要做兩件事,
1、登錄阿里雲控制台,點右上「管理控制台」,然後點左上「產品與服務」,在第二列中點擊「對象存儲OSS」,如果沒開通就要開通,如果開通了直接點擊右上的「新建bucket」,來創建一個bucket,記住buket的名字。(註:其實通過api也是可以直接創建bucket的,因為這個操作不多,所以我就用控制台來創建了,降低理解的難度。)
2、開始寫上傳腳本,因為要導入oss的sdk,所以要下安裝下,比較簡單,跟安裝其他python包沒啥區別,解壓進入目錄,然後運行python setup.py install 就安裝完畢了,接下來看我們如何使用它,全部代碼如下:
#!/usr/bin/python env
#autor:glacier
#date:2015-11-16
import os,os.path,time
import operator
import time
from oss.oss_api import *
prefix = '/home/dbback'
logtime = time.strftime(time.ctime())
#filelist = [ file for file in os.listdir(os.path.dirname(os.path.abspath(__file__))) if os.path.isfile(file) ]
filelist = [ file for file in os.listdir(prefix) if os.path.isfile(prefix + '/' + file) ]
def get_time(filename):
ft = os.stat(filename)
return ft.st_ctime
#def get_max():
# flist = []
# for file in filelist:
# flist.append(os.stat(file).st_ctime)
# return max(flist)
def get_dist():
d = {}
for file in filelist:
d[file] = get_time(prefix + '/' + file)
return d
if __name__ == '__main__':
#maxtime = get_max()
d = get_dist()
#dic= sorted(d.iteritems(), key=lambda d:d[1], reverse = True)
upfile = max(d.iteritems(), key=operator.itemgetter(1))[0]
endpoint = "your aliyun endpoint"
accessKeyId, accessKeySecret="your accessKeyId","your accessKeySecret "
oss = OssAPI(endpoint, accessKeyId, accessKeySecret)
res = oss.put_object_from_file("bucketname",upfile,prefix + '/' + upfile)
if res.status != 200:
with open('/var/log/dbback.log', 'a+') as f:
f.write(logtime + ' back failed' + '\n')
我們接下來分析下腳本內容,其中腳本中注釋的行都不用看,是我編寫過程中測試用的,最開始我們設定了備份文件的目錄和記錄日誌的時間,然後生成了一個備份目錄所有文件的列表(列表其實不是最好的方式,我是用最簡單的方式了,因為文件多了,列表會慢),然後定義了兩個函數,get_time()函數是獲取文件的創建時間戳,get_dist()函數是獲取文件名和時間戳的字典,主函數部分比較難理解的根據字典value排序獲得文件名了,d.iteritems()獲得字典中的每個key,value對,key指定了一個函數,operator.itemgetter(1)表示用value來排序(因為就兩個元素,key 是0,value就是1了),就是時間戳,排序完後返回key,最後的[0]做了這個工作,腳本其它部分的內容我就不多說了,都是很常見的用法,沒什麼難於理解的,好,腳本就介紹到這里,接下來進入我們最後一步。
第三步:將腳本寫入crontab中,具體什麼時候執行,就根據大家各自業務不同來設置了,沒什麼特別的。
⑤ 學會了python能做什麼
學習python之後可以做的事情有很多,而且python是現在非常熱門的語言,可以從事的崗位也是比較多的,應用領域非常廣泛,比如說:人工智慧、爬蟲、web開發、數據分析、科學運算、自動化等,就業機會多,薪資待遇高。