python程序编写常见的12个基本知识汇总:正则表达式更换,文件目录解析xml方式,按列列表排序,去重复,字典排序,词典,目录,字符串数组变换,時间目标实际操作,命令行参数分析(getopt),打印出打印出文件格式,二进制转换,Python启用DOS命令或脚本制作,Python读写能力文档。

自然,学习培训Python会难以。沒有好的学习材料,怎么学?

写私聊能够获得很多python学习材料。

1.正则表达式更换。

总体目标:用另一个字符串替换字符串数组行中的overview.gif。

>>> line = '> > > mo=re.compile(r '(?> > mo.sub (r' replace _ str _ ',行)' ' > > > mo . sub(r " test tset " ',行)'留意:在其中是配对的数据信息,能够利用这类方法直接引用。

2.解析xml文件目录方式。

有时大家必须解析xml一个文件目录寻找一个指定的文档目录,os.walk方式能够解析xml,十分便捷。

import osfileList = []rootdir = "/data"for root, subFolders, files in os.walk(rootdir):if '.svn' in subFolders: subFolders.remove('.svn') # 清除特殊文件目录for file in files: if file.find(".t2t") != -1:# 搜索特殊后缀名的文档 file_dir_path = os.path.join(root,file) fileList.append(file_dir_path)print fileList

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')]>>> print a[0][0]2011-03-17>>> b = sorted(a, key=lambda result: result[1],reverse=True)>>> print b[('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=lambda result: result[2],reverse=True)>>> print c[('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.列举uniq。

有时候必须删掉目录中的反复原素,因而应应用下列方式:

>>> 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.dict排列。

一般来说,大家依据词典的关键词进行排列,可是如果我们想依据词典的值来进行排列,大家应用下列方式:

>>> from operator import itemgetter>>> 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')]

6.词典,目录和字符串数组互相传送。

下边是转化成的连接数据库字符串数组,它从词典变换为字符串数组。

>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}>>> ["%s=%s" % (k, v) for k, v in params.items()]['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']>>> ";".join(["%s=%s" % (k, v) for k, v in params.items()])'server=mpilgrim;uid=sa;database=master;pwd=secret'

下列实例将字符串数组变换为词典。

>>> a = 'server=mpilgrim;uid=sa;database=master;pwd=secret'>>> aa = {}>>> for i in a.split(';'):aa[i.split('=',1)[0]] = i.split('=',1)[1]...>>> aa{'pwd': 'secret', 'database': 'master', 'uid': 'sa', 'server': 'mpilgrim'}

7.時间目标实际操作将時间目标转化成字符串数组。

>>> import datetime>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M") '2011-01-20 14:05'

時间和尺寸的较为。

>>> import time>>> t1 = time.strptime('2011-01-20 14:05',"%Y-%m-%d %H:%M")>>> t2 = time.strptime('2011-01-20 16:05',"%Y-%m-%d %H:%M")>>> t1 > t2 False>>> t1 < t2 True

时差计算,测算8钟头前的時间。

>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M") '2011-01-20 15:02'>>> (datetime.datetime.now() - datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M") '2011-01-20 07:03'

将字符串数组变换为時间目标。

>>> endtime=datetime.datetime.strptime('20100701',"%Y%m%d")>>> type(endtime) >>> print endtime 2010-07-01 00:00:00

将从世界协调时1970-01-01 00:00:00到现在的分秒,打印出文件格式。

>>> import time>>> a = 1302153828>>> time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(a)) '2011-04-07 13:23:48'

8.命令行参数分析(getopt)

一般在撰写一些日常运维管理脚本制作时,必须按照不一样的状况键入不一样的cmd选择项,完成不一样的作用。Python中给予了Getopt控制模块,非常好地完成了命令行参数的剖析。间距表述如下所示。请参照下列程序流程:

#!/usr/bin/env python# -*- coding: utf-8 -*-import sys,os,getoptdef usage():print '''''Usage: analyse_stock.py [options...]Options:-e : Exchange Name-c : User-Defined Category Name-f : Read stock info from file and save to db-d : delete from db by stock code-n : stock name-s : stock code-h : this help infotest.py -s haha -n "HA Ha"'''try:opts, args = getopt.getopt(sys.argv[1:],'he:c:f:d:n:s:')except getopt.GetoptError:usage()sys.exit()if len(opts) == 0:usage()sys.exit()for opt, arg in opts:if opt in ('-h', '--help'): usage() sys.exit()elif opt == '-d': print "del stock %s" % argelif opt == '-f': print "read file %s" % argelif opt == '-c': print "user-defined %s " % argelif opt == '-e': print "Exchange Name %s" % argelif opt == '-s': print "Stock code %s" % argelif opt == '-n': print "Stock name %s" % argsys.exit()

9.打印出打印出文件格式。

9.1.打印出文件格式字符串数组阻拦字符串数组輸出。下列实例将只輸出字符串数组的前三个字母。

>>> str="abcdefg">>> print "%.3s" % str abc

依照固定不动总宽輸出,用空网格图进行是远远不够的。下列实例的輸出总宽为10。

>>> str="abcdefg">>> print "s" % str abcdefg

截取字符串并以固定不动总宽輸出。

>>> str="abcdefg">>> print ".3s" % str abc

浮点型数据位保存。

>>> import fpformat>>> a= 0.0030000000005>>> b=fpformat.fix(a,6)>>> print b 0.003000

舍入涵数关键用以对浮点型开展舍入。

>>> from decimal import *>>> a ="2.26">>> b ="2.29">>> c = Decimal(a) - Decimal(b)>>> print c -0.03>>> c / Decimal(a) * 100 Decimal('-1.327433628318584070796460177')>>> Decimal(str(round(c / Decimal(a) * 100, 2))) Decimal('-1.33')

9.2.二进制转换。

有时候必须不一样的十进制转换。请参照下列实例(%x十六进制,%d十进制,%o十进制)。

>>> num = 10>>> print "Hex = %x,Dec = %d,Oct = %o" %(num,num,num) Hex = a,Dec = 10,Oct = 12

10.Python启用DOS命令或脚本制作。

应用os.system()启用system指令,程序流程中没法获得輸出和传参。

>>> import os>>> os.system('ls -l /proc/cpuinfo')>>> os.system("ls -l /proc/cpuinfo") -r--r--r-- 1 root root 0 3月 29 16:53 /proc/cpuinfo 0

应用os.popen()启用DOS命令,程序流程能够获得指令輸出,但是无法获得实行的传参。

>>> out = os.popen("ls -l /proc/cpuinfo")>>> print out.read() -r--r--r-- 1 root root 0 3月 29 16:59 /proc/cpuinfo

应用commands.getstatusoutput()启用DOS命令,程序流程能够得到指令輸出和实行的传参。

>>> import commands>>> commands.getstatusoutput('ls /bin/ls') (0, '/bin/ls')

11.Python捕获客户Ctrl C,Ctrl D ctrl d事情。有时,必须在程序流程中捕获客户电脑键盘事情,例如ctrl c exit,那样才安全性撤出程序流程。

try: do_some_func()except KeyboardInterrupt: print "User Press Ctrl C,Exit"except EOFError: print "User Press Ctrl D,Exit"

12.Python读写能力文档。

一次将文档读取目录更快,适用文档相对性较小的状况。

track_file = "track_stock.conf"fd = open(track_file)content_list = fd.readlines()fd.close()for line in content_list: print line

一行行载入较慢,因此没充分的运行内存来载入全部文档(文件太大)。

fd = open(file_path)fd.seek(0)title = fd.readline()keyword = fd.readline()uuid = fd.readline()fd.close()

写文档和写行的差别。

Fd.write(str):将str载入文档,write()不容易在str后加上回车符。Fd.writelines(content):将项目的任何內容按原状载入文档,每排后不加上一切內容。

文中关键详细介绍Python编程语言的12个基本上知识的汇总,包含正则表达式更换.文件目录解析xml方式.目录按列排列.去重复.字典排序等。,有须要的小伙伴能够参照!

评论(0条)

刀客源码 游客评论