python學習個人筆記_第1頁
python學習個人筆記_第2頁
python學習個人筆記_第3頁
python學習個人筆記_第4頁
python學習個人筆記_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

環(huán)境搭建:Windows上安裝文件名:2exe-0.6.9.win32-py2.5.exe1、python生成exe文件1)先在機器上裝python,我裝的是python2.5(最好別用python2.6)2)從下面網(wǎng)站下載并安裝py2exe-0.6.9.win32-py2.5.exe/projects/py2exe/files/3)轉(zhuǎn)換h3c-analyse-log.py到h3c-analyse-log.exe編輯setup.py文件內(nèi)容如下:fromdistutils.coreimportsetupimportpy2exeoptions={"py2exe":{"includes":["_strptime"],"bundle_files":1}}setup(options=options,zipfile=None,console=["h3c-analyse-log.py"],)運行下面2個命令D:\ProgramFiles\Python25>pythonsetup.pyinstallD:\ProgramFiles\Python25>pythonsetup.pypy2exe4)生成的exe文件就放在python2.5安裝目錄的子目錄dist下,比如我的在:D:\ProgramFiles\Python25\dist下面。Linux系統(tǒng)上用的部分常用軟件:pexpect程序安裝說明Pexpect介紹:Pexpect是DonLibes的Expect語言的一個Python實現(xiàn),是一個用來啟動子程序,并使用正則表達式對程序輸出做出特定響應,以此實現(xiàn)與其自動交互的Python模塊。Pexpect的使用范圍很廣,可以用來實現(xiàn)與ssh,ftp,telnet等程序的自動交互;可以用來自動復制軟件安裝包并在不同機器自動安裝;還可以用來實現(xiàn)軟件測試中與命令行交互的自動化。安裝步驟:將pexcept壓縮包下載到根目錄下(本文以pexpect-2.3.tar.gz為例)執(zhí)行tarxzvfpexpect-2.3.tar.gz進入pexpect-2.3目錄,執(zhí)行python./setup.pyinstall[root@localhostst]#tarxzvfpexpect-2.3.tar.gz[root@localhostst]#cdpexpect-2.3[root@localhostpexpect-2.3]#python./setup.pyinstall說明:可通過運行pexpect-2.3/examples/下的范例驗證pexcept是否已經(jīng)安裝成功。pylint安裝說明pylint介紹:Pylint是一個Python代碼分析工具,它分析Python代碼中的錯誤,查找不符合代碼風格標準(Pylint默認使用的代碼風格是PEP8,具體信息,請參閱相關參考資料)和有潛在問題的代碼。我們使用的是最新版本的pylint0.21.3。安裝步驟:Pylint可以用于所有高于或者等于2.2的Python版本兼容。需要logilab-astng(version>=0.14)和logilab-common(version>=0.13)的包,如果是Python版本低于2.3,那么它還需要optik包(本文接下來的示例暫不考慮這種情況)。下載Pylint、logilab-astng(version>=0.14)和logilab-common(version>=0.13)的包,使用tarzxvf*.tar.gz解壓縮這些包。依次進入logilab-astng、logilab-common和Pylint解開的文件夾中,運行命令pythonsetup.pyinstall來安裝。安裝完成后,就可以通過pylint[options]module_or_package來調(diào)用Pylint了。具體使用方法可以使用pylint–h命令查看幫助信息。通常情況下,可直接使用pylintmodule_or_package進行檢查。paramiko安裝說明paramiko是一個python的擴展模塊,實現(xiàn)了基于SSH2協(xié)議的遠程主機連接。在使用python腳本對被測設備進行ssh連接時使用起來比較方便。下面是安裝步驟:獲取pycryto(paramiko需要依賴此模塊)的安裝包,使用tarzxvf*.tar.gz解壓縮之后運行pythonset.upinstall可以完成安裝。獲取paramiko的安裝包,解壓縮之后傳到測試環(huán)境上,進入目錄運行pythonset.upinstall完成安裝。注意:請在linux內(nèi)核版本為2.6.32的測試環(huán)境上安裝,否則可能出現(xiàn)兼容性問題范例:#!/usr/bin/python#-*-coding:cp936-*-'''Filename:lun_create.py'''importosimportreimportst_sshimportst_logimportst_statimportst_commonimportst_confimportlun_common#==========================================================================#InitializingLogandReport.#initlog(level,name,path):#level:"base","extended","advanced"#name:log_namemustbelog_Filename,report_namecanbereport_Filename.#path:"st_conf.HOME_PATH/storware_st/log/st_log_","st_conf.HOME_PATH/storware_st/log/st_report_"#==========================================================================#Initializinglog,log_namemustbe"log_+Filename"LOG_LEVEL="base"LOG_NAME="log_lun_create.py"LOG_PATH=st_conf.HOME_PATH+"storware_st/log/st_log_"LOG,LOGFILE=st_log.init_log(LOG_LEVEL,LOG_NAME,LOG_PATH)#Initializingreport,report_namemustbe"report_+Filename"REPORT_LEVEL="base"REPORT_NAME="report_lun_create.py"REPORT_PATH=st_conf.HOME_PATH+"storware_st/log/st_report_"REPORT,REPORTFILE=st_log.init_log(REPORT_LEVEL,REPORT_NAME,REPORT_PATH)#ST_TEST_CASE_BEGINST_LUN_CREATE_001defST_LUN_CREATE_001():'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''用例ID:ST_LUN_CREATE_001測試項:創(chuàng)建LUN成功用例標題:用類型為raid5的raidgroup部分空間創(chuàng)建LUN成功(GB為單位)重要級別:H預置條件:1、要創(chuàng)建LUN名之前不存在2、LUN所依賴的RAIDGROUP存在,其大小為250GB,類型為raid5輸入:1、luncreatename=lun0rg_name=rg1chunk_size=64lun_size=5GBsync=disable2、lunqueryname=lun0操作步驟:1、輸入1有預期結(jié)果12、輸入2有預期結(jié)果2預期結(jié)果:1、lun0創(chuàng)建成功,并記錄info級別日志:”CreateLUNsuccessfully.”;命令行不打印任何信息;2、可以查詢到此LUN信息,檢查LUN創(chuàng)建時的默認值是否符合規(guī)格LUNinfo:#Name:lun0#Id:0#UUID:001151bf-00000001-16623588-1ea70eac#Status:normal#RAIDtype:raid5#RAIDGroupname:rg1#RAIDGroupUUID:001151bf-00000001-424b7b0f-0f5c977d#Capacity:5120MB#Rawcapacity:5120MB此項內(nèi)容需要等到超級塊做好后再檢查實際值#Chunksize:64KB#Stripsize:128KB#Ownership:local#Sync/Rebuildstatus:unknown#Sync/Rebuildpercent:0%#Rebuildpriority:high#Syncpriority:high#ReadCachestate:enable#WriteCachestate:enable'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''try:#Definetestcase'snametest_case=r'ST_LUN_CREATE_001'#Beginlog,don'tmodifyst_log.st_begin(test_case,LOG)#[step1]Pre-conditioninitializationLOG.info('[step1]Pre-conditioninitialization')is_clear_once=Falseresult='ok'client=st_ssh.ssh_connect()#lun_common.lun_env_clear_all(client,LOG)ret=lun_common.raidgroup_create_single(client,'rg1','raid5','sata',LOG)ifret=='err':raiseException,'Failedtocreateraidgroup.'#[step2]TestedcommandcallLOG.info('[step2]Testedcommandcall')test_cmd='luncreatename=lun0rg_name=rg1chunk_size=64lun_size=5GBsync=disable'exe_res,content=st_common.exec_cli_command(client,test_cmd,LOG)ifexe_resisnotTrue:raiseException,content#創(chuàng)建LUN成功后延時1秒鐘,因為創(chuàng)建過程中有異步事件需要處理st_common.wait_cmd_complete(1)#[step3]CheckresultLOG.info('[step3]Checkresult')#執(zhí)行查詢命令check_cmd='lunqueryname=lun0'exe_res,content=st_common.exec_cli_command(client,check_cmd,LOG)ifexe_resisnotTrue:raiseException,content#設置要檢查的LUNinfo信息,default表示按正則表達式匹配,其它為精確匹配lun_info={\'lun_name':'lun0',\'lun_id':'0',\'lun_uuid':'default',\'status':'normal',\'type':'raid5',\'rg_name':'rg1',\'rg_uuid':'default',\'capacity':'5120MB',\'raw_cap':'default',\'chunk':'64KB',\'strip':'128KB',\'owner':'local',\'sync_stat':'default',\'sync_pct':'default',\'rbd_prio':'default',\'sync_prio':'default',\'rc_stat':'default',\'wc_stat':'default',\}iflun_common.is_lun_info_match(lun_info,content)isnotTrue:raiseException,'FailedtomatchLUNinfo.'#[step4]ClearenvironmentLOG.info('[step4]Clearenvironment')is_clear_once=Trueret=lun_common.lun_env_clear_all(client,LOG)#此處拋出異常原因在于清除失敗后可由異常分支再嘗試清除一次ifret=='err':raiseException,'Failedtoclearenvironment.'LOG.info('Clearenvironmentsuccessfully')exceptException,allerr_msg:LOG.info(allerr_msg)LOG.info('Clearenvironment')result='err'ret=lun_common.lun_env_clear_all(client,LOG)#如果是正常清理一次不成功導致的異常,再清一次可以成功的話用例通過#ifret=='ok'andis_clear_once==True:#result='ok'finally:#[step5]PrintreportLOG.info('[step5]Printreport')ifresult=='ok':REPORT.info("[PASSED]"+""+test_case)elifresult=='block':REPORT.info("[BLOCKED]"+""+test_case+st_conf.BLOCKED_SIGN)elifresult=='err':REPORT.info("[FAILED]"+""+test_case+st_conf.FAILED_SIGN)client.close()#Endlog,don'tmodifyst_log.st_end(test_case,LOG)returntest_case,result#EndofTestcase_ST_LUN_CREATE_001#Belowisusedtodebugdeftest():'''thisfuntionisusedfordebugging'''ST_LUN_CREATE_001()st_stat.result_parse(REPORTFILE)st_common.st_message('lun_create')#thisparametershouldbeFilename#copyreportforCIos.popen('cp'+REPORTFILE+''+st_conf.CC_ST_Log_Path+'report.txt')os.popen('cp'+st_conf.CONF_PATH+'user_st'+st_conf.CC_ST_File_Path)if__name__=='__main__':test()個人筆記:1.使用變量時只需要給它們賦一個值。不需要聲明或定義數(shù)據(jù)類型。2.如果你想要在一個物理行中使用多于一個邏輯行,那么你需要使用分號(;)來特別地標明這種用法。分號表示一個邏輯行/語句的結(jié)束。3.python有整形,長整型,浮點型,復數(shù)型四種類型。4.python中有自然字符標志,在字符串前面加上r或R這個標志,字符就不再轉(zhuǎn)義,都是其本身的含義。例如r"Newlinesareindicatedby\n",這里就會輸出\n,而不是轉(zhuǎn)移為換行符。特別說明:python中的正則表達式中,如果想維持本身含義,可以在字符前面加上\維持本身意義,例如\\表示\。5.每個縮進層使用單個制表符或兩/四個空格。6.python有邏輯行和物理行的概念,邏輯行指的是代碼太長一行寫不完,行末的單獨一個反斜杠表示代碼在下一行繼續(xù),而不是開始一個新的行。7.當你在函數(shù)定義內(nèi)聲明變量的時候,它們與函數(shù)外具有相同名稱的其他變量沒有任何關系,即變量名稱對于函數(shù)來說是局部的。這稱為變量的作用域。所有變量的作用域是它們被定義的塊,從它們的名稱被定義的那點開始。8.只有在形參表末尾的那些參數(shù)可以有默認參數(shù)值,即你不能在聲明函數(shù)形參的時候,先聲明有默認值的形參而后聲明沒有默認值的形參。例如,deffunc(a,b=5)是有效的,但是deffunc(a=5,b)是無效的。9.打印docstring的方法,print函數(shù)名.__doc__10.元組和列表十分類似,只不過元組和字符串一樣是不可變的即你不能修改元組。11.你需要記住的只是如果你想要復制一個列表或者類似的序列或者其他復雜的對象(不是如整數(shù)那樣的簡單對象),那么你必須使用切片操作符來取得拷貝。如果你只是想要使用另一個變量名,兩個名稱都引用同一個對象,那么如果你不小心的話,可能會引來各種麻煩。12.在一個字符串中,行末的單獨一個反斜杠表示字符串在下一行繼續(xù),而不是開始一個新的行.13.大多數(shù)re模塊函數(shù)都可以作為regex對象的方法。14.python腳本中打印是printa,c語言中是printf("%s","abc");15.test.pywearearguments,'test.py'是sys.argv[0]、'we'是sys.argv[1]、'are'是sys.argv[2]以及'arguments'是sys.argv[3]。注意,Python從0開始計數(shù),而非從1開始。16.Python中有三種內(nèi)建的數(shù)據(jù)結(jié)構(gòu)——列表、元組和字典。17..*可以匹配任何字符串。可以匹配'123@!@##123asdfasdfsadf'18.re.M加上了這個,就說明"^"匹配字符串的開始和字符串中每行的開始;"$"匹配字符串的結(jié)尾和字符串中每行的結(jié)尾;19.python當中沒有{}符號,是通過用相同的縮進來表示同一組語句的開始和結(jié)束?;菊Z法基本介紹Python是一種簡單易學,功能強大的編程語言,它有高效率的高層數(shù)據(jù)結(jié)構(gòu),簡單而有效地實現(xiàn)面向?qū)ο缶幊蘌ython簡潔的語法和對動態(tài)輸入的支持,再加上解釋性語言的本質(zhì),使得它在大多數(shù)平臺上的許多領域都是一個理想的腳本語言,特別適用于快速的應用程序開發(fā)簡單Python是一種代表簡單主義思想的語言,閱讀一個良好的Python程序就感覺像是在讀英語一樣,但是對格式Python還是嚴格要求的。Python的這種偽代碼本質(zhì)是它最大的優(yōu)點之一,它使你能夠?qū)W⒂诮鉀Q問題而不是去搞明白語法本身。易學Python極其容易上手Python有極其簡單的語法免費、開源Python是自由/開放源碼軟件之一,簡單的說,可以自由發(fā)布這個軟件的拷貝、閱讀它的源代碼、對它進行修改、把它的一部分用于新的自由軟件中。Python的優(yōu)秀是因為由一群希望看到一個更加優(yōu)秀的Python的人創(chuàng)造并經(jīng)常改進著的。高層語言使用Python時,你無需考慮諸如如何管理程序使用的內(nèi)存一類的底層細節(jié)可移植性各種不同的系統(tǒng)上都可以看到Python的身影,如果你小心避免使用依賴于系統(tǒng)的特性,那么你的所有Python程序就可以無需修改的在以下任何平臺上運行。這些平臺包括:所有Unix衍生系統(tǒng)(Linux,MacOSX,Solaris,F(xiàn)reeBSD等等)Win32家族(WindowsNT,2000,XP等等)早期平臺:MacOS8/9,Windows3.x,DOS,OS/2,AIX掌上平臺(掌上電腦/移動電話):NokiaSeries60/SymbianOS,WindowsCE/PocketPC,SharpZaurus/arm-linux,PalmOS游戲控制臺:SonyPS2,PSP,NintendoGameCube其他解釋性Python語言寫的程序不需要編譯成二進制代碼。可以直接從源代碼運行程序。在計算機內(nèi)部,Python解釋器把源代碼轉(zhuǎn)換成稱為字節(jié)碼的中間形式,然后再把它翻譯成計算機使用的機器語言并運行。由于不需要擔心如何編譯程序,如何確保連接轉(zhuǎn)載正確的庫等等,所有的這一切都使Python更加簡單。面向?qū)ο驪ython面向?qū)ο缶幊虨閿?shù)據(jù)和邏輯相分離的結(jié)構(gòu)化和過程化編程添加了新的活力。面向?qū)ο缶幊讨С謱⑻囟ǖ男袨?、特性以及?或功能與它們要處理或所代表的數(shù)據(jù)結(jié)合在一起。Python的面向?qū)ο蟮奶匦允桥c生俱來的。然而,Python絕不像Java或Ruby僅僅是一門面向?qū)ο笳Z言,事實上它融匯了多種編程風格。比TCL強大,支持“大規(guī)模變成”,能夠開發(fā)大型系統(tǒng)比Perl語法簡潔,更具可讀性、更易于維護,有助于減少Bug比Java更簡單、更易于使用比C++更簡單、更易于使用,并且可以使用其進行擴展比VB更強大也更具備跨平臺特性比Ruby更成熟、語法更具可讀性作者:GuidovanRossum/研究過多種語言,從中吸取了許多覺得不錯的特性,將它們?nèi)塾谝粻t1989年底創(chuàng)始于荷蘭,起初作為一個打發(fā)時間的研究項目,目前已經(jīng)得到廣泛的應用簡單、直觀、強大開源,以便任何人都可以為它做貢獻代碼像純英語一樣易懂適用于短期開發(fā)的日常任務Python基本類型:整型int長整形long布爾型TrueFalse雙精度浮點型double復數(shù)x+yj,其中x是實數(shù)部分,y為敘述部分字符串string數(shù)值運算:運算符:+,-,*,/賦值:=除了以上,還有冪運算**,取整除//,左移<<等等字符串Python中的字符串有很多種表示方法,可以使用單引號和雙引號。例如“abcde”,‘a(chǎn)bcde’字符串可以跨多行,用反斜杠“\”續(xù)行。hello=“abcdefgh\ajlsdjflajlksdjlgjasdg\djlfajlsdjflaj”字符串可以使用“+”運算符進行連接操作,用“*”進行任意次連接操作hello=“123456”hello=hello+“hello”hello=‘w’*5強制縮進Python的代碼塊通過縮進對齊表達代碼邏輯而不是使用大括號,因為沒有了額外的字符,程序的可讀性更高。而且縮進完全能夠清楚地表達一個語句屬于哪個代碼塊。當然,代碼塊也可以只有一個語句組成。注意:相同層次的語句前面的空格或制表符數(shù)量必須一致條件語句ifIf語句是選取要執(zhí)行的操作,是Python主要的選擇工具,代表Python程序所擁有的大多數(shù)邏輯If語句是復合語句,同其他符合語句一樣,if語句可以包含其他語句條件語句ifPython中沒有switch、case語句可以用多個if實現(xiàn),或者對字典進行檢索運算或搜索列表Python中的真值判斷在數(shù)學運算中,Boolean值的True和False分別對應于1和0。真和假是每個Python對象的固有屬性,每個對象不是真就是假數(shù)字非0,則為真對象非空,則為真比較和相等測試會返回True或Falseand和or運算符會返回True或False的操作對象三元表達式C?X:Y,或稱三元運算符.(C是條件表達式;X是C為True時的結(jié)果,Y是C為False時的結(jié)果),Python中的實現(xiàn)語法為XifCelseY循環(huán)控制while事實它上是一個條件循環(huán)語句.與if聲明相比,如果if后的條件為真,就會執(zhí)行一次相應的代碼塊.而while中的代碼塊會一直循環(huán)執(zhí)行,直到循環(huán)條件不再為真.while的一般格式循環(huán)控制forfor循環(huán)在Python中是一個通用的序列迭代器:可以遍歷任何有序的序列對象內(nèi)的元素for語句可以用于字符串、列表、元組、其他內(nèi)置可迭代對象,以及用戶通過類創(chuàng)建的新對象for的一般格式函數(shù)定義def關鍵字def用于函數(shù)定義,括號里的是形參表。函數(shù)體從下一行開始。函數(shù)體的第一條語句可以是說明性問題,即文檔字符串,或稱docstring。在代碼中增加文檔字符串是好習慣,應該盡量養(yǎng)成。序列序列類型有著相同的訪問模式:它的每一個元素可以通過指定一個偏移量的方式得到。而多個元素可以通過切片操作的方式一次得到。序列支持連接操作符“+”,重復連接操作符“*”,以及切片操作符“[],[:],[::]”X=[1,2,3,4]X[0]=1X[0:2]=[1,2,3]X[-1]=4X[::-1]=[4,3,2,1]列表、元組和字典列表、元組和字典都是序列列表是處理一組有序項目的數(shù)據(jù)結(jié)構(gòu),即你可以在一個列表中存儲一個序列的項目元組和列表十分類似,只不過元組和字符串一樣是不可變的即你不能修改元組字典類似于你通過聯(lián)系人名字查找地址和聯(lián)系人詳細情況的地址簿,即,我們把鍵(名字)和值(詳細情況)聯(lián)系在一起。注意,鍵必須是唯一的,就像如果有兩個人恰巧同名的話,你無法找到正確的信息。模塊模塊基本上就是一個包含了所有你定義的函數(shù)和變量的文件。為了在其他程序中重用模塊,模塊的文件名必須以.py為擴展名。模塊可以從其他程序輸入以便利用它的功能。這也是我們使用Python標準庫的方法。模塊如何工作例如我們利用import語句輸入sys模塊?;旧?,這句語句告訴Python,我們想要使用這個模塊。sys模塊包含了與Python解釋器和它的環(huán)境有關的函數(shù)。當Python執(zhí)行importsys語句的時候,它在sys.path變量中所列目錄中尋找sys.py模塊。如果找到了這個文件,這個模塊的主塊中的語句將被運行,然后這個模塊將能夠被你使用。注意,初始化過程僅在我們第一次輸入模塊的時候進行。常見問題文件打開后需要關閉,否則會造成后面程序運行出現(xiàn)問題。f=open(r'/etc/iscsi/initiatorname.iscsi','w')f.write('InitiatorName='+initiatorname)f.close()用readline()從文件中讀取了一行,如何把行尾的回車換行符去掉?方法1:replace('\n','')方法2:可以使用n.rstrip()去掉行尾的回車和空格如何獲取一個字符串中的某些字符可以采用分片的方式:tag[9:30]表示獲取第9至第29個字符(從0開始計算)如何使代碼支持中文?在代碼頭部增加#-*-coding:cp936-*-如何import自定義的模塊?首先,必須確保模塊名為*.py方法一:添加其所在路徑到環(huán)境變量中方法二:(不建議使用)import該模塊前添加:importsyssys.path.append('該模塊所在路徑')如何方便地獲取配置文件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論