仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 422|回复: 8
打印 上一主题 下一主题

[CentOS(社区)] CentOS教程之python编程中经常使用的12种基本常识总结

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 21:05:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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


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

  1. 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)

  1. >>>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)]
复制代码

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


  1. >>>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])
复制代码

5、字典排序(dictsort)
普通来讲,我们都是依据字典的key来停止排序,然则我们假如想依据字典的value值来排序,就应用以下办法

  1. >>>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、字典,列表,字符串互转
以下是生成数据库衔接字符串,从字典转换到字符串


  1. >>>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
复制代码

上面的例子是将字符串转化为字典

  1. >>>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}
复制代码

7、时光对象操作

  1. 将时光对象转换成字符串>>>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模块很好的完成了敕令行参数的解析,上面间隔解释。请看以下法式:


  1. #!/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()
复制代码

9、print格局化输入
9.1、格局化输入字符串


  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十进制)

  1. 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挪用体系敕令或许剧本

  1. 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加入,如许可以更好的平安加入法式


  1. 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读写文件

  1. 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的关键。
因胸联盟 该用户已被删除
5#
发表于 2015-2-9 01:06:05 | 只看该作者
对于英语不是很好的读者红旗 Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。
兰色精灵 该用户已被删除
6#
发表于 2015-2-26 17:32:14 | 只看该作者
尽量不要提问纯属是扯蛋.学习Linux特别是自己一个人初学入手的时候没人教很困难.当然如果可以的话平时多去买些Linux书...对学习Linux很有帮助.
第二个灵魂 该用户已被删除
7#
发表于 2015-3-8 16:36:42 | 只看该作者
安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果Linux说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。
蒙在股里 该用户已被删除
8#
发表于 2015-3-16 10:24:03 | 只看该作者
掌握硬件配置,如显卡,声卡,网卡等,硬件只要不是太老或太新一般都能被支持,作为一名Linux系统管理员建议多阅读有关硬件配置文章,对各种不支持或支持不太好的硬件有深刻的了解。
小魔女 该用户已被删除
9#
发表于 2015-3-22 22:51:16 | 只看该作者
期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表