不帅 发表于 2015-1-14 21:05:02

CentOS教程之python编程中经常使用的12种基本常识总结

小知识:CentOS完全遵守上游供应商的再发行政策,并且以百分之百的软件兼容性为目标。
python编程中经常使用的12种基本常识总结:正则表达式调换,遍历目次办法,列表按列排序、去重,字典排序,字典、列表、字符串互转,时光对象操作,敕令行参数解析(getopt),print格局化输入,进制转换,Python挪用体系敕令或许剧本,Python读写文件。
1、正则表达式调换
目的:将字符串line中的overview.gif调换成其他字符串


>>>line=>>>mo=re.compile(r(?<=SRC=)"(+)",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是婚配到的数据,可以经由过程如许的方法直接援用
2、遍历目次办法
在某些时刻,我们须要遍历某个目次找出特定的文件列表,可以经由过程os.walk办法来遍历,异常便利

importosfileList=[]rootdir="/data"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)printfileList

3、列表按列排序(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)]>>>printa2011-03-17>>>b=sorted(a,key=lambdaresult:result,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,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)]

4、列表去重(listuniq)
有时刻须要将list中反复的元素删除,就要应用以下办法


>>>lst=[(1,sss),(2,fsdf),(1,sss),(3,fd)]>>>set(lst)set([(2,fsdf),(3,fd),(1,sss)])>>>>>>lst=>>>set(lst)set()

5、字典排序(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值停止排序的
6、字典,列表,字符串互转
以下是生成数据库衔接字符串,从字典转换到字符串


>>>params={"server":"mpilgrim","database":"master","uid":"sa","pwd":"secret"}>>>["%s=%s"%(k,v)fork,vinparams.items()]>>>";".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)...>>>aa{pwd:secret,database:master,uid:sa,server:mpilgrim}

7、时光对象操作


将时光对象转换成字符串>>>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:48

8、敕令行参数解析(getopt)
平日在编写一些日运维剧本时,须要依据分歧的前提,输出分歧的敕令行选项来完成分歧的功效
在Python中供给了getopt模块很好的完成了敕令行参数的解析,上面间隔解释。请看以下法式:


#!/usr/bin/envpython#-*-coding:utf-8-*-importsys,os,getoptdefusage():printUsage:analyse_stock.pyOptions:-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,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()

9、print格局化输入
9.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)

9.2、进制转换
有些时刻须要作分歧进制转换,可以参考上面的例子(%x十六进制,%d十进制,%o十进制)
importosfileList=[]rootdir="/data"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)printfileList0
10、Python挪用体系敕令或许剧本


importosfileList=[]rootdir="/data"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)printfileList1

11、Python捕捉用户Ctrl+C,Ctrl+D事宜
有些时刻,须要在法式中捕捉用户键盘事宜,好比ctrl+c加入,如许可以更好的平安加入法式


importosfileList=[]rootdir="/data"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)printfileList2

12、Python读写文件


importosfileList=[]rootdir="/data"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)printfileList3

小知识:得益于极为出色的稳定性,全球范围内无数著名网站均选用它,CentOS是异次元的服务器也是!

飘灵儿 发表于 2015-1-16 23:44:03

CentOS教程之python编程中经常使用的12种基本常识总结

Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。

愤怒的大鸟 发表于 2015-1-25 16:48:06

用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用户,估shell也称为命令解释器,有关命令的学习可参考论坛相关文章,精通英文也是学习Linux的关键。

小妖女 发表于 2015-2-3 12:16:10

用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用户,估shell也称为命令解释器,有关命令的学习可参考论坛相关文章,精通英文也是学习Linux的关键。

因胸联盟 发表于 2015-2-9 01:06:05

对于英语不是很好的读者红旗 Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。

兰色精灵 发表于 2015-2-26 17:32:14

尽量不要提问纯属是扯蛋.学习Linux特别是自己一个人初学入手的时候没人教很困难.当然如果可以的话平时多去买些Linux书...对学习Linux很有帮助.

第二个灵魂 发表于 2015-3-8 16:36:42

安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果Linux说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。

蒙在股里 发表于 2015-3-16 10:24:03

掌握硬件配置,如显卡,声卡,网卡等,硬件只要不是太老或太新一般都能被支持,作为一名Linux系统管理员建议多阅读有关硬件配置文章,对各种不支持或支持不太好的硬件有深刻的了解。

小魔女 发表于 2015-3-22 22:51:16

期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。?
页: [1]
查看完整版本: CentOS教程之python编程中经常使用的12种基本常识总结