|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:Linux同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。- 1.数据对象耐久化在某些时刻,须要将数据对象的内容保留上去,便利下次法式启动时读取,这个就须要将对象耐久化,请看以下例子importpickle#createthetestdictionarybefore_d={}before_d[1]="Name1"before_d[2]="Name2"before_d[3]="Name3"#pickledumpthedictionaryfout=open("dict1.dat","w")pickle.dump(before_d,fout,protocol=0)fout.close()#pickleloadthedictionaryfin=open("dict1.dat","r")after_d=pickle.load(fin)fin.close()print(before_d)#{1:Name1,2:Name2,3:Name3}print(after_d)#{1:Name1,2:Name2,3:Name3}可以看出,我们将数据对象内容以文件的方法保留,可以作一些简略的cache处置,特别是在写一些比拟小的法式时,异常有效2.正则表达式调换目的:将字符串line中的overview.gif调换成其他字符串>>>line=>>>mo=re.compile(r(?<=SRC=)"([w+.]+)",re.I)>>>mo.sub(r"1****",line)>>>mo.sub(rreplace_str_1,line)<IMGALIGN="middle"replace_str_overview.gifBORDER="0"ALT=""></span>>>>mo.sub(r"testetstset",line)留意:个中1是婚配到的数据,可以经由过程如许的方法直接援用3.遍历目次办法在某些时刻,我们须要遍历某个目次找出特定的文件列表,可以经由过程os.walk办法来遍历,异常便利importosfileList=[]rootdir="/tmp"forroot,subFolders,filesinos.walk(rootdir):if.svninsubFolders:subFolders.remove(.svn)#消除特定目次forfileinfiles:iffile.find(".t2t")!=-1:#查找特定扩大名的文件file_dir_path=os.path.join(root,file)fileList.append(file_dir_path)printfileList4.列表按列排序(listsort)假如列表的每一个元素都是一个元组(tuple),我们要依据元组的某列来排序的化,可参考以下办法上面例子我们是依据元组的第2列和第3列数据来排序的,并且是倒序(reverse=True)>>>a=[(2011-03-17,2.26,6429600,0.0),(2011-03-16,2.26,12036900,-3.0),(2011-03-15,2.33,15615500,-19.1)]>>>printa[0][0]2011-03-17>>>b=sorted(a,key=lambdaresult:result[1],reverse=True)>>>printb[(2011-03-15,2.33,15615500,-19.1),(2011-03-17,2.26,6429600,0.0),(2011-03-16,2.26,12036900,-3.0)]>>>c=sorted(a,key=lambdaresult:result[2],reverse=True)>>>printc[(2011-03-15,2.33,15615500,-19.1),(2011-03-16,2.26,12036900,-3.0),(2011-03-17,2.26,6429600,0.0)]5.列表去重(listuniq)有时刻须要将list中反复的元素删除,就要应用以下办法>>>lst=[(1,sss),(2,fsdf),(1,sss),(3,fd)]>>>set(lst)set([(2,fsdf),(3,fd),(1,sss)])>>>>>>lst=[1,1,3,4,4,5,6,7,6]>>>set(lst)set([1,3,4,5,6,7])6.字典排序(dictsort)普通来讲,我们都是依据字典的key来停止排序,然则我们假如想依据字典的value值来排序,就应用以下办法>>>fromoperatorimportitemgetter>>>aa={"a":"1","sss":"2","ffdf":5,"ffff2":3}>>>sort_aa=sorted(aa.items(),key=itemgetter(1))>>>sort_aa[(a,1),(sss,2),(ffff2,3),(ffdf,5)]从下面的运转成果看到,依照字典的value值停止排序的7.字典,列表,字符串互转以下是生成数据库衔接字符串,从字典转换到字符串>>>params={"server":"mpilgrim","database":"master","uid":"sa","pwd":"secret"}>>>["%s=%s"%(k,v)fork,vinparams.items()][server=mpilgrim,uid=sa,database=master,pwd=secret]>>>";".join(["%s=%s"%(k,v)fork,vinparams.items()])server=mpilgrim;uid=sa;database=master;pwd=secret上面的例子是将字符串转化为字典>>>a=server=mpilgrim;uid=sa;database=master;pwd=secret>>>aa={}>>>foriina.split(;):aa[i.split(=,1)[0]]=i.split(=,1)[1]...>>>aa{pwd:secret,database:master,uid:sa,server:mpilgrim}8.时光对象操作将时光对象转换成字符串>>>importdatetime>>>datetime.datetime.now().strftime("%Y-%m-%d%H:%M")2011-01-2014:05时光巨细比拟>>>importtime>>>t1=time.strptime(2011-01-2014:05,"%Y-%m-%d%H:%M")>>>t2=time.strptime(2011-01-2016:05,"%Y-%m-%d%H:%M")>>>t1>t2False>>>t1<t2True时光差值盘算,盘算8小时前的时光>>>datetime.datetime.now().strftime("%Y-%m-%d%H:%M")2011-01-2015:02>>>(datetime.datetime.now()-datetime.timedelta(hours=8)).strftime("%Y-%m-%d%H:%M")2011-01-2007:03将字符串转换成时光对象>>>endtime=datetime.datetime.strptime(20100701,"%Y%m%d")>>>type(endtime)<typedatetime.datetime>>>>printendtime2010-07-0100:00:00>>>将从1970-01-0100:00:00UTC到如今的秒数,格局化输入>>>importtime>>>a=1302153828>>>time.strftime("%Y-%m-%d%H:%M:%S",time.localtime(a))2011-04-0713:23:489.敕令行参数解析(getopt)平日在编写一些日运维剧本时,须要依据分歧的前提,输出分歧的敕令行选项来完成分歧的功效在Python中供给了getopt模块很好的完成了敕令行参数的解析,上面间隔解释。请看以下法式:#!/usr/bin/envpython#-*-coding:utf-8-*-importsys,os,getoptdefusage():printUsage:analyse_stock.py[options...]Options:-e:ExchangeName-c:User-DefinedCategoryName-f:Readstockinfofromfileandsavetodb-d:deletefromdbbystockcode-n:stockname-s:stockcode-h:thishelpinfotest.py-shaha-n"HAHa"try:opts,args=getopt.getopt(sys.argv[1:],he:c:f:d:n:s:)exceptgetopt.GetoptError:usage()sys.exit()iflen(opts)==0:usage()sys.exit()foropt,arginopts:ifoptin(-h,--help):usage()sys.exit()elifopt==-d:print"delstock%s"%argelifopt==-f:print"readfile%s"%argelifopt==-c:print"user-defined%s"%argelifopt==-e:print"ExchangeName%s"%argelifopt==-s:print"Stockcode%s"%argelifopt==-n:print"Stockname%s"%argsys.exit()留意:这里我们应用短格局剖析串"he:c:f:d:n:s:",当一个选项只是表现开关状况时,即前面不带附加参数时,在剖析串中写当选项字符。被选项前面是带一个附加参数时,在剖析串中写当选项字符同时前面加一个":"号所以"he:c:f:d:n:s:"就表现"h"是一个开关选项;"e:c:f:d:n:s:"则表现这些选项前面应当带一个参数.10.print格局化输入10.1.格局化输入字符串截取字符串输入,上面例子将只输入字符串的前3个字母>>>str="abcdefg">>>print"%.3s"%strabc按固定宽度输入,缺乏应用空格补全,上面例子输入宽度为10>>>str="abcdefg">>>print"%10s"%strabcdefg截取字符串,依照固定宽度输入>>>str="abcdefg">>>print"%10.3s"%strabc浮点类型数据位数保存>>>importfpformat>>>a=0.0030000000005>>>b=fpformat.fix(a,6)>>>printb0.003000对浮点数四舍五入,重要应用到round函数>>>fromdecimalimport*>>>a="2.26">>>b="2.29">>>c=Decimal(a)-Decimal(b)>>>printc-0.03>>>c/Decimal(a)*100Decimal(-1.327433628318584070796460177)>>>Decimal(str(round(c/Decimal(a)*100,2)))Decimal(-1.33)>>>10.2.进制转换有些时刻须要作分歧进制转换,可以参考上面的例子(%x十六进制,%d十进制,%o十进制)>>>num=10>>>print"Hex=%x,Dec=%d,Oct=%o"%(num,num,num)Hex=a,Dec=10,Oct=1211.Python挪用体系敕令或许剧本应用os.system()挪用体系敕令,法式中没法取得到输入和前往值>>>importos>>>os.system(ls-l/proc/cpuinfo)>>>os.system("ls-l/proc/cpuinfo")-r--r--r--1rootroot03月2916:53/proc/cpuinfo0应用os.popen()挪用体系敕令,法式中可以取得敕令输入,然则不克不及获得履行的前往值>>>out=os.popen("ls-l/proc/cpuinfo")>>>printout.read()-r--r--r--1rootroot03月2916:59/proc/cpuinfo>>>应用commands.getstatusoutput()挪用体系敕令,法式中可以取得敕令输入和履行的前往值>>>importcommands>>>commands.getstatusoutput(ls/bin/ls)(0,/bin/ls)>>>12.Python捕捉用户Ctrl+C,Ctrl+D事宜有些时刻,须要在法式中捕捉用户键盘事宜,好比ctrl+c加入,如许可以更好的平安加入法式try:do_some_func()exceptKeyboardInterrupt:print"UserPressCtrl+C,Exit"exceptEOFError:print"UserPressCtrl+D,Exit"13.Python读写文件一次性读入文件到列表,速度较快,实用文件比拟小的情形下track_file="track_stock.conf"fd=open(track_file)content_list=fd.readlines()fd.close()forlineincontent_list:printline逐行读入,速度较慢,实用没有足够内存读取全部文件(文件太年夜)fd=open(file_path)fd.seek(0)title=fd.readline()keyword=fd.readline()uuid=fd.readline()fd.close()写文件write与writelines的差别Fd.write(str):把str写到文件中,write()其实不会在str后加上一个换行符Fd.writelines(content):把content的内容全体写到文件中,原样写入,不会在每行前面加上任何器械
复制代码 小知识:如果说Ubuntu是现今最受桌面用户欢迎的Linux操作系统,那么CentOS就是最受公司、企业、IDC喜爱的Linux发行版了。 |
|