考勤系统Python

2024-09-22

考勤系统Python(精选10篇)

考勤系统Python 篇1

0 引 言

文本分类[1,2]研究将一篇文章判定为预先设定类别问题,相关研究成果广泛应用于信息分发、邮件过滤、网页主题归类、查询结果分类、网络内容安全等领域。

在文本分类研究中,理论与实践环节之间相互紧密结合:自然语言理解[3]、特征选择[4]、机器学习[5]等学科为文本分类提供了坚实的理论基础;文本分类还属于实践性很强的研究领域,索引项语义级别的选定[6]、特征选择方式[7]的选取、不同机器学习算法[1]的选用都需要大量实践操作来进行检验。

因此选择适当的编程语言有助于文本分类领域的理论研究、算法检验以及系统开发。Python是一门应用广泛的通用编程语言,易于学习使用且功能强大,适合各种规模的软件编写,在文本分类领域的研究与开发实践中Python也有其显著特点与优点。本文结合中文文本分类系统课题TmPy,讨论系统开发过程中各环节需求特点,以及选择Python作为开发语言解决这些问题的优势所在。进而得出在文本分类等科学计算领域Python具有广泛应用前景的结论。

1 文本分类系统

文本分类过程首先对输入文本进行信息获取、格式解析、字符编码转换等预处理,然后进行文本索引与特征选择,将文本在特征空间上的表示形式作为中间结果传递给分类算法以训练分类器。训练后的分类器可以对新的未标记样本进行类别判定,从而实现自动分类。一个典型的文本分类系统如图1所示。

各环节对文本分类系统TmPy开发提出了不同需求:输入环节需要灵活的文本处理以及根据需要进行网页抓取;预处理环节则包括文件格式解析以及字符编码判定与转换;文本索引环节涉及字符串处理、分词软件自动调用、算法实现等领域;特征选择、分类算法和测试评估环节是系统核心环节,重点是矢量数据处理、分类和优化算法设计等。

由此可知,文本分类系统研究与开发过程要求编程语言应当具备优秀的字符串处理、灵活的数值处理和算法实现能力,且对全面需求均有较完善处理能力,而且由于涉及多个环节,编写程序易读易维护也有助于文本分类系统开发。

2 Python在开发文本系统中的特点

Python具有许多特点,使得其在文本分类等科学计算领域有广泛应用。

良好的可读性,Python语言在设计时即十分重视可读性,在书写格式统一、尽量采用常用单词而非特殊符号表示关键词、丰富的数据结构、算法和标准库等方面均有体现,从而使得Python代码易于阅读和维护,有利于涉及多个环节、多人参与、需借鉴参考他人研究成果等情况的系统开发维护。

内置常用数据结构与算法,不仅有利于提高程序易读性,且使得开发重心集中在文本系统本身关键算法实现方面。

丰富的标准库与第三方库,许多辅助环节如字符编码、网络信息抓取等已有实现可以借鉴,从而可以避免重复开发。

良好的嵌入扩展与“胶水”能力,利用“胶水”特性可将已有程序“黏合”在一起自动运行;嵌入与扩展可与其它编程语言互操作,发挥混合语言编程的优势。

相关研究的丰富积累,如同在其它众多科学计算领域一样,Python在自然语言理解、文本处理和机器学习等领域也有广泛的研究,有许多优秀的相关模块与研究专著。丰富的研究成果为进一步研究提供了坚实基础。

综上所述,Python的各种特点使得文本分类系统各个环节的需求得以顺利实现。

3 基于Python的文本分类系统开发

本节结合文本分类系统TmPy开发过程中的若干环节来具体展示Python语言开发的快捷与灵活。

3.1 基于线性核函数的参数选择

线性核函数进行文本分类需要考虑惩罚因子C的寻优。C选择过大时容易受噪声影响,过小时又容易产生学习能力不足问题。利用Python的黏合功能可以方便地调用LibSVM软件相关功能,设计算法遍历C参数,将输出分类准确率以图形方式直观显示。以LibSVM自带heart数据为例,遍历log(C)从-15到10的处理结果如图2所示,可见左侧较高准确率处(C较小)表现稳定,比右侧(C较大)更为可靠。

3.2 自适应kNN分类法

应用kNN分类方法时需要选择适当k值,k过小易受噪声数据影响,过大时又容易受样本类别先验分布影响。通常采用交叉验证方式选择合适的k。

考虑采用动态自适应策略来选择k,对于N类样本,起始选择k为N+1,然后k步进增加N,对比随着k增大时新增加的N个近邻与目标样本的平均相似程度以及原来选中近邻的平均相似程度之比:

undefined

随着在训练集上分类准确率的变化,同样以交叉验证方式选择合适的比值ak,N作为k步进停止标准。利用公开的搜狗语料库进行对比实验,精简版本共9个类别(N=9),每个类别以训练样本文件名切分前70%文件为训练集,后30%为测试集,以两分分词法进行分词,信息增益方式选择6000维特征,以正则化的TFIDF为特征权重方式。以两个样本的余弦值为相似性度量,对比结果见表1,由表1可知,无论是准确率还是召回率,自适应kNN方式均有明显提高。

以上算法全部由Python实现,各个环节具体开发过程从图形直观显示、粘合现有软件、算法实现等多个方面展示了Python的开发特点。

4 结 论

本文详述了Python语言在文本分类系统开发时的特点,并以线性核参数寻优结合可视化与自适应kNN分类算法等来具体描述其特点,表明Python适合作为文本分类等科学计算领域的开发语言。

当然,如同常用编程语言一样,Python也有其不足之处,Python在运行性能方面比C、Fortran等编译类型语言仍有较明显差距,对于运算密集型应用应当考虑通过将耗费计算量特别大的部分重写为C模块供Python调用,或者通过胶水特性直接调用C、Fortran等语言的已有程序来进行弥补,Python最大优势在于活跃和友好的社区,开发遇到问题可以得到及时真诚的反馈,进而完善文本分类系统,提高其实用性,并将其用于网络信息处理、邮件过滤等应用领域。

参考文献

[1]Fabrizio S.Machine learning in automated text categorization.ACMComputing Surveys(CSUR),2002,34:1-47.

[2]Yang Y.An Evaluation of Statistical Approaches to Text Categorization.Information Retrieval,1999(1):69-90.

[3]Manning C D,Schütze H.Foundations of statistical natural languageprocessing.MITPress,1999.

[4]Forman G.An extensive empirical study of feature selection metrics fortext classification.Journal of Machine Learning Research,2003(3):1289-1305.

[5]Bishop C M.Pattern recognition and machine learning,Springer,2006.

[6]Joachims T.Learning to Classify Text Using Support Vector Machines:Methods,Theory and Algorithms.Kluwer Academic Publishers,2002.

[7]Yang Y,Pedersen J O.A comparative study on feature selection in textcategorization.1997.

考勤系统Python 篇2

这篇文章主要介绍了python修改操作系统时间的方法,涉及Python同步网络时间与本机时间的相关技巧,需要的朋友可以参考下

本文实例讲述了python修改操作系统时间的方法,分享给大家供大家参考。具体实现方法如下:

#-*- coding:utf-8 -*-import socketimport structimport timeimport win32apiTimeServer = ‘210.72.145.44‘ #国家授时中心ipPort = 123def getTime(): TIME_1970 = 2208988800L client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) data = ‘x1b‘ + 47 * ‘‘ client.sendto(data, (TimeServer, Port)) data, address = client.recvfrom(1024) data_result = struct.unpack(‘!12I‘, data)[10] data_result -= TIME_1970 return data_resultdef setSystemTime(): tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst = time.gmtime(getTime()) win32api.SetSystemTime(tm_year, tm_mon, tm_wday, tm_mday, tm_hour, tm_min, tm_sec, 0) print “Set System OK!”if __name__ == ‘__main__‘: setSystemTime() print “%d-%d-%d %d:%d:%d” % time.localtime(getTime())[:6]

考勤系统Python 篇3

[关键词]计算思维;Python;程序设计;课堂教学

[中图分类号] G642 [文献标识码] A [文章编号] 2095-3437(2016)08-0127-03

一、引言

2006年,美国CMU大学周以真(Jeannette M.Wing)教授在美国计算机权威期刊《Communications of the ACM》上发表并定义了计算思维(Computational Thinking)。[1]周以真教授认为:计算思维是运用计算机科学的基础概念去求解问题、设计系统以及理解人类行为,它包括了涵盖计算机科学之广度的一系列思维活动。计算思维就是通过约简、嵌入、转化和仿真等方法,把一个看起来困难的问题重新阐释成一个我们知道如何求解的问题;计算思维采用抽象和分解的方法来控制庞杂的任务或设计巨型复杂系统。它是基于关注点分离的方法,它是选择一种合适的方式陈述一个问题,或者是选择合适的方式对一个问题的相关方面建模使其易于处理。计算思维利用启发式推理寻求解答,就是在不确定情况下的规划、学习和调度。计算思维将成为每一个人的技能组合成分,而不仅仅限于科学家。[4]

计算思维能力是多种学科人才必须具备的基本素质,其概念一经提出就引起了国内外科学界和教育界的广泛关注。近年来,国内外学者从不同的角度对计算思维的含义、特点和培养方法进行了探索和研究。中国科学院院士、中国科学技术大学陈国良教授指出:在大学中,计算思维不仅能振兴大学计算教育,而且会令科学与工程领域创造出革命性的研究成果。[2]朱亚宗教授将计算思维、实验思维和理论思维归结为人类三大科学思维方式。[3]

二、Python语言

Python语言是一种面向对象、直译式计算机程序设计语言,Python语法简捷、清晰和易读。Python是开源的语言,具有丰富和强大的类库,同时具有优良的可扩展性和平台可移植性,它能够很轻松的把用其他语言制作的各种模块轻松地联结在一起。

Python语言的主要特点:

(一)简单易学

Python有极其简单的语法,容易上手,易于学习,非常适合初学者,也特别适合专家使用。一个好的Python程序专注于解决问题本身,而并不是沉迷于语言语法。

(二)免费、开源

Python的使用者可以自由地发布这个软件的拷贝,阅读它的源代码,对它做改动,把它的一部分用于新的自由软件中。

(三)可移植性、可扩展性、可嵌入性

Python可以被移植到各种不同的平台上,如Linux、Windows、Macintosh等等,以及Google基于linux开发的android平台。Python可以将部分程序用C或C++编写,然后在Python程序中使用它们。使用者也可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。

(四)面向对象

Python支持面向过程和面向对象的编程。

(五)丰富的库

Python除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

目前我国高校主要把C语言和VB语言作为程序设计课程所用语言。这些程序设计语言历史较久,功能强大,特点突出。但是这些程序语言进行程序开发工作量较大,难度相对较高,特别是对于非计算机专业和文科院校专业的学生更是如此。

Python语言是一种简洁、易读的程序语言,具有可扩展性和可移植性的特点。同时Python是开源的语言,拥有丰富的库,为开发提供了极大的便利。目前国内外采用Python语言作为程序设计课程语言的高等院校日益增多。

三、Python程序设计课程的计算思维

程序设计课程是很多非计算机专业学生的一门必修课,同时也是一个训练学生计算思维很好的平台。[5]本文尝试在Python程序设计课程的教学过程中,引入计算思维的先进理念,把程序设计知识以一种新的方式教授给学生,通过把计算思维融入Python程序设计课程教学中,实现逐步引入计算思维的基本概念和方法,使学生理解计算思维的理念,学会运用计算思维的方法,去发现问题,然后寻找解决问题的途径,最终解决问题。这样通过本课程的学习,达到培养学生计算思维的能力,提高学生解决问题的能力和创新能力的目的,为程序设计课程探索一条新的教学途径。

在实际工作中,当需要解决一个大型问题时,往往都会首先考虑怎么对问题进行分解化简。如现代制造业中的离散制造,就融合了计算思维的本质,把一个庞大的生产问题,按照产品的功能进行层层分解,使一个庞大的问题分解成一个个子问题,更便于人们在生产过程中进行处理和控制。计算思维就是通过约简、分离、嵌入、启发等方法,把复杂的问题分解并解释成若干简单问题,从而降低难度,便于分析和解决问题。

在Python程序设计教学过程中,运用这种分解或分层的方法,以程序设计理论为出发点,把人的思维融入程序设计解决问题。学生不再只是面对抽象的程序设计的理论与算法,更多的是将注意力集中在分解问题和解决问题的过程中,同时还可以将各自专业和学科知识融入其中。

四、Python程序设计课程中计算思维应用

在计算思维解决问题的方法中,关键是把问题化简和分离,也就是将复杂而庞大的问题按照较为合理的方法进行分解简化,问题最终将被分解成多个模块,或者多个阶段,然后再针对这些模块或阶段去逐个找出解决方法,最终解决整个系统的问题。

事实上这种把问题化简和分离的方法,非常适合在Python程序设计课程中应用。教师在教学中把各个问题分解简化,学生面对的不再是整个完整的问题,而是一个个相对容易解决的小问题和小模块,所以学生只需要把每个小问题解决好了,那么也就掌握了Python程序设计的方法和过程。下面以Python程序设计课程中的一个问题为例,来说明Python程序设计课程中的计算思维应用。

现在需要用Python程序设计中的列表来处理数据。教师首先把列表问题分解成创建列表、添加数据、显示数据等几个问题,然后逐步解决这些问题,最终实现运用列表处理数据的目的。

(一)创建列表

现有一些关于汽车基本信息的数据,需要根据这些数据先去创建关于汽车品牌的一个列表。在创建列表过程中,教师会让学生重点关注一下几个问题:列表的结构、列表的存储方式、列表中数据项的处理方法。

创建一个名为“cars”,关于汽车品牌的列表。

cars=[“大众”,“通用”,“丰田”,“福特”]

通过创建列表这一问题,使得学生掌握创建列表的基本方法,了解列表中数据项的数据类型问题,同时也让学生知道列表中数据项存储方式是类似于数组的。在解决创建列表问题的基础上,教师可以进一步把问题加以扩展,如列表中数据项的显示、列表中数据项的添加、列表中数据项的删除等等,这样又让学生掌握了列表中数据项的处理方法。

(二)添加数据

在创建了关于汽车品牌的列表后,现在需要为它增加一个生产年份的数据,而且要求数据要添加在每一个汽车品牌后面。在这一问题中,教师提示学生要关注解决问题的不同方法。

方法一:运用“insert”和“append”命令,向“cars”列表中直接添加所需要的数据。

cars.insert(1,“2012”)

cars.insert(3,“2010”)

cars.insert(5,“2000”)

cars.append(“2014”)

这种方法需要用到“insert”和“append”命令,而且还要分别计算每个生产年份在整个列表中的位置。

方法二:从头重新创建“cars”列表。

cars=[“大众”,“2012”,“通用”,“2010”,“丰田”,“2000”,“福特”,“2014”]

这种方法相对比较简单,只需重建列表。

添加数据问题解决后,让学生进行总结讨论,这两种方法的优缺点,使学生了解对应不同的需要和不同的列表,可以采用不同方法来解决问题。

(三)显示数据

进入显示数据阶段,教师首先要求学生把上述所建的“cars”列表中的数据,按品牌和年份分别显示出来,用“print”命令显示出来,这一任务学生很容易完成。

print(cars[0],cars[1])

print(cars[2],cars[3])

print(cars[4],cars[5])

print(cars[6],cars[7])

然后教师再提出一个问题,如果“cars”列表中添加了新的数据项,也需要显示出来,怎么解决?学生解决的方法往往是增加“print”语句,接着我们再问学生:如果列表中增加的数据项有很多项,那怎么解决?是不是要添加很多条“print”语句呢?

上面这个问题往往会难住学生,教师就可以适时的提出用迭代方法来处理列表中的数据,引入“for循环”语句可以非常方便解决这一问题。

for each_item in cars:

print(each_item)

用迭代方法方便解决问题后,我们还可以让学生考虑用“while循环”语句编写迭代代码。

cars=[“大众”,2012,“通用”,2010,“丰田”,2000,“福特”,2014]

number=0

while number

print(cars[number])

number=number+1

显示数据问题解决后,学生在此过程中掌握了通过迭代来实现显示列表中数据的方法,同时初步了解了循环语句的用法。

(四)思维启发

经过前面三个阶段的学习,学生已经基本掌握了列表处理数据的方法,同时也从中了解了与计算思维相关的一些知识。为了让学生更好的理解计算思维的本质,教师需要把计算思维方法中的思维启发引入教学过程中,让学生多思考,多寻求解决问题的方法,从而达到培养学生应用计算思维能力的目的。

具体实施方法是,以前面三个阶段的学习为基础,再给学生提出一系列与列表相关的问题,如运用列表知识来解决企业销售的问题、超市商品价格查询问题等。学生要解决这些问题,光靠前三个阶段的知识是远远不够的,由于课堂时间有限,所以教师应鼓励学生课后去思考,去寻找解决问题的方法。经过一阶段后,教师再去检查学生完成任务的情况,当然学生完成的情况可能不是很理想,存在很多问题,这都是很正常的。教师提出一系列与列表相关问题,其目的主要是关注学生思考探索问题的过程,而不是解决问题的结果。在学生经过自己思考探索之后,教师在学生结果中挑选一些典型例子,进行讲解分析,最后引出正确的解决问题的方法和思路。通过这些训练,学生思考问题、解决问题的能力会有很大提高,学生也慢慢学会使用计算思维的各种方法来思考和解决问题。

学生计算思维的基本技能的培养,不可能单单通过课堂教学就能完成,实际的锻炼是最好的方法。所以教师应当多鼓励学生参加一些创新项目和应用能力大赛,通过项目和大赛磨炼和挑战自己,参与的学生都受益匪浅,感到自己各方面的能力都得到了锻炼。学生的这些收获往往是在课堂上老师所不能给予的。计算思维能力的培养最终要靠学生自己在学习、实践活动过程中逐步掌握和形成。

五、结束语

要让学生掌握好计算思维的基本技能,必须把计算思维的培养融入整个教学过程中。从Python程序设计课程教学尝试来看,计算思维方法能很好的培养和训练学生思考和解决问题的能力,使学生较好的掌握教学内容,使教学效果良好,这表明了把计算思维融入程序设计课堂教学的可行性和有效性。所以,教师都有必要从计算思维的理念出发,积极主动地参与到教学过程中,把计算思维的各种方法和自己的课程有机的结合起来,从而达到培养学生计算思维的能力的目的。

[ 注 释 ]

[1] Wing J M.Computational Thinking[J].Communication of the ACM,2006(3):33-35.

[2] 陈国良,董荣胜.计算思维与大学计算机基础教育[J].中国大学教学,2011(1):7-11,32.

[3] 朱亚宗.论计算思维——计算思维的科学定位、基本原理及创新路径[J].计算机科学,2009(4):53-55.

[4] 周以真.计算思维[J].中国计算机学会通讯,2007(11):83-85.

[5] 孙家广.计算机科学的变革[J].中国计算机学会通讯,2009(2):6-9.

[责任编辑:钟 岚]

考勤系统Python 篇4

Python是一种开放源代码的脚本编程语言。自从20 世纪90 年代初Python语言诞生至今, 它逐渐被广泛应用于科学计算、网站开发和系统管理等领域。Python语法简洁而清晰, 具有丰富和强大的类库, 适用于多种操作系统, 已经成为最受欢迎的程序设计语言之一[1,2,3,4]。Python能够把用其他语言制作的各种模块很轻松地联结在一起[5], 在网络、文本分类等方面得到了广泛的应用[6,7]。

由于Python语言的简洁、易读以及可扩展性, 在国际上非常流行, 在一些大学中开设了计算思维导论(Python)[8]、Python程序设计等课程。

目前,Python语言的考试, 基本上还停留在传统的考试上。开发一个Python语言的考试系统, 有着重要的意义。在本文中, 将对Python语言的操作题设计和评分方法进行研究和讨论。

2 Python考试系统及题型

Python程序设计考试系统采用C/S结构。服务器上操作系统为Windows 2008, 数据库为SQL Server2008。客户机上操作系统为Windows 7,Python软件为2.6.6 版[9]。

考生从客户机登录后, 从服务器上抽取试题及考试用的Python程序和数据文件。交卷时, 考试系统对考生的作答结果进行自动评分, 并将考试成绩写入服务器上的SQL Server 2008 数据库中[9]。

试题设计与评分方法是考试系统中的关键问题。要根据考试的目的和要求, 设计试题和评分的算法。

在Python程序设计考试系统中, 考试试题包括理论题和操作题。理论题采用的题型有: 选择题和填空题。操作题采用的题型有: 程序改错题、程序填空题和编程题。

选择题的设计和评分方法比较简单, 填空题的设计和评分方法, 在文献[10] 中进行了研究探讨, 因此, 理论题的设计和评分方法不再赘述。

本文中主要研究和讨论程序改错题、程序填空题和编程题的设计和评分方法。

3 程序改错题和程序填空题的设计与评分

设置程序改错题和程序填空题的主要目的是为了测试考生对Python语言的语法、程序设计和程序调试的掌握程度。

程序改错题和程序填空题的设计与评分, 其目的和方法基本上是一致的。评分方法与填空题的评分类似。

3.1 程序改错题

在程序改错题中, 拟设置2~5 个错误点。为了考生做题以及评分的方便, 在每个错误点的上一行加上一个标识行, 并且要求考生不能删除标识行。

例如, 下面是一道程序改错题的样题。

试题: 打开考试文件夹下的test1.py文件。test1.py的功能是: 计算100 以内能被17 整除的所有数。请修改程序中的错误, 使它能得出正确的结果。

注意: 不得增加行或删除行, 也不得更改程序的结构!

正确的程序运行结果为:

100以内能被17整除的所有数是:

17 34 51 68 85

数的个数是:5

下面是考试系统给出的程序test1.py。

3.2 程序填空题

在程序填空题中, 拟设置2~5 个空。为了考生做题以及评分的方便,在每个空处的上一行加上一个标识行,并且要求考生不能删除标识行。

例如, 下面是一道程序填空题的样题。

试题: 打开考试文件夹下的test2.py文件。test2.py的功能是: 计算1+2+3+...+100 的和。请在程序中的下划线处填入正确的内容, 并把下划线删除, 使程序得出正确的结果。

注意: 不得增加行或删除行, 也不得更改程序的结构!

正确的程序运行结果为:

1+2+3+...+100=5050

下面是考试系统给出的程序test2.py。

在设置程序改错题的改错点和程序填空题的填空处时, 既要考虑到python的测试点, 同时也要考虑答案的确定性。

4 编程题试题设计与评分

设置编程题的主要目的是为了测试考生的Python程序设计能力。

与大多数考试软件一样, 编程题的评分采用黑盒测试法。根据程序的运行结果, 给出相应的分数。

例如, 下面是一道编程题的样题。

试题: 打开考试文件夹下的test3.py文件。test3.py的功能是: 计算n!, 请完成计算n! 的函数fact()。

执行此程序, 在Python Shell窗口中显示出的运行结果为:

3! = 6

下面是考试系统给出的程序test3.py。

通过检测程序test3.py输出的out.dat文件, 可以确定考生编写的计算n! 的函数fact( n ) 是否正确。

5 考试环境的设置

在Python程序设计考试系统开发中, 采用Microsoft Visual Studio 2010 作为Python程序设计考试系统的开发平台。

为了便于考生操作, 在考试界面上建立一个类似于Python的启动带图形界面的Python Shell的快捷方式IDLE (Python GUI)。

启动带图形界面的Python Shell, 有几种方法, 主要有( 以Python 2.6.6 为例):

1)运行“开始”菜单中Python 2.6 的快捷方式IDLE (Python GUI), 快捷方式IDLE (Python GUI) 的路径文件名为“C:Program DataMicrosoftWindowsStart MenuProgramsPython 2.6IDLE(Python GUI).lnk”。

利用Shell Execute() 函数, 调用“开始”菜单中Python 2.6 的快捷方式IDLE (Python GUI), 启动带图形界面Python Shell的代码为:

Shell Execute(0,vb Null String,”C:Program DataMicrosoftWindowsStart MenuProgramsPython2.6IDLE (Python GUI).lnk”,vb Null String,vb Null String,vb Normal Focus)

启动带图形界面Python Shell后, 当前工作路径为“C:Python26”。

2) 运行Python 2.6 下的批处理文件“C:Python26Libidlelibidle.bat”, 并给出idle.pyw文件的路径“C:Python26Libidlelib”。

利用Shell Execute() 函数, 调用Python 2.6 下的批处理文件“C:Python26Libidlelibidle.bat”,启动带图形界面Python Shell的代码为:

Shell Execute(0,vb Null String,”C:Python26Libidlelibidle.bat”,vb Null String ,”C:Python26Libidlelib”,vb Normal Focus)

若在Shell Execute() 函数的第4 参数中, 给出.py文件名, 可以自动打开要操作的.py文件, 并指定当前工作路径。由于执行批处理文件“C:Python26Libidlelibidle.bat”, 在启动带图形界面的Python Shell过程中, 会打开和关闭一个DOS窗口。

3) 运行Python 2.6 下的“C:Python26pythonw.exe”程序, 并给出参数 “C:Python26Libidlelibidle.pyw”。

调用Shell Execute() 函数, 调用Python 2.6 下的“C:Python26pythonw.exe”程序, 启动带图形界面Python Shell的代码为:

Shell Execute(0,vb Null String,”C:Python26pythonw.exe”,”C:Python26Libidlelibidle.py w”,vb Null String,vb Normal Focus)

若在Shell Execute() 函数的第5 参数中, 给出路径,可以指定当前工作路径。

在以上几种启动带图形界面的Python Shell方法中, 方法3)应该是比较理想的。对于不同的Python版本, 其Python软件的安装路径是有所不同的。

6 结束语

本文中给出的Python操作题的试题设计与评分方法, 可以应用到计算思维导论(Python)、Python程序设计等课程的计算机考试中。

在考试系统软件开发过程中, 应该根据在计算机上考试和评分的特点设计试题, 这样才能提高计算机考试的可信度。

摘要:Python语言具有简洁、易读以及可扩展等特性,在国际上非常流行,一些大学中已开设了计算思维导论(Python)、Python程序设计等课程。目前,这些课程的考试,还停留在传统的考试上。开发一个Python语言的考试系统,有着重要的意义。在本文中,对Python语言的考试环境的设置及Python语言的操作题设计和评分方法进行了研究和讨论,以提高计算机考试的可信度。

关键词:Python,试题设计,评分方法

参考文献

[1]M ARK LUTZ.Lea rning Py tho n,Fourth Edition[M].O’Reilly Media,Inc.,2009.

[2]ALLEN DOWNEY,JEFFREY ELKNER,and CHRIS MEYERS.How to Think Like a Computer Scientist:Learning with Python[M].Green Tea Press Inc.,2002.

[3]MARK LUTZ.Programming Python,Fourth Edition[M].O’Reilly Media,Inc.,2010.

[4][美]Allen B.Downey著,赵普明译.像计算机科学家一样思考Python[M].北京:人民邮电出版社,2013.8

[5]罗霄,任勇,山秀明.基于Python的混合语言编程及其实现[J].计算机应用与软件,2004,21(12):17-18,112.

[6]孙强,李建华,李生红.基于Python的文本分类系统开发研究[J].计算机应用与软件,2011,28(3):13-14.

[7]蒋崇武,刘斌,王轶辰等.基于Python的实时嵌入式软件测试脚本[J].计算机工程,2009,35(15):64-66,73.

[8]九校联盟(C9)计算机基础教学发展战略联合声明[J].中国大学教学,2010(9):4,9.

考勤系统Python 篇5

1.exe下载地址:

www.codegood.com/archives/129

分为32位和64位,下载对应的exe即可

2.下载完后,双击exe安装即可

3.检查是否安装成功:

如果安装成功,将没有任何提示,如下

代码如下复制代码>>>import MySQLdb

>>>

安装不成功的提示:

代码如下复制代码

>>>import MySQLdb

Traceback (most recent call last):

File “”, line 1, in

ImportError: No module named MySQLdb

>>>

考勤系统Python 篇6

大数据时代,信息的传播与分享是创造效率的必要条件,也是人与人之间交流与协作的不可或缺的最佳途径。在此环境之下,每条信息及其背后的各种介质,其实都是大数据的重要组成部分,如果能将这些对象科学合理地纳入到数据环境中来,变会获得意想不到的效果。因此,无论在日常生活还是研究工作中,人们都必须学会运用大数据的思维来思考解决问题。

在工作中,各类文档的传递交换是常规普通的频发现象。一般的处理方式不外乎以下几种: 借助于单位的OA系统和QQ等即时通工具进行传输、通过Email进行收发、通过云空间进行分享、建立FTP站点进行共享、利用U盘拷贝分享等等[1]。以上的传输手段,类型多样,也各有利弊,此处暂且不对其各自所有的特性进行分析评价。本文研究实现的基于Python语言的一种分布式文件共享系统,则是可以作为上述各种共享方式的补充。可以说,该系统融入了大数据背景下数据处理的理念,将一个团体内部的所有成员,都看作是数据的发布者与获得者,即如同搭积木一样地将其各自所拥有的数据加入到共享环境中来,而要想获得这些数据,则只需一个关键字搜索即可快捷实现。

1分布式文件共享系统的设计思路

所谓分布式文件共享是指,所有可检索的共享文件不存在于固定的服务器上,而是分布于加入该文件共享环境中的各台独立的计算机上[2,3],该环境中的用户既是数据的提供者,也是数据的获取者。

整个系统的设计思路如下: 首先,该环境中的用户会根据实际情况设置一个用于共享的文件夹,系统会自动提交共享目录结构,并将该目录进行共享; 其次,用户可以依托一个通用的搜索入口,在布设于该环境范围内的所有计算机的共享目录中进行检索,并下载所需要的文件。为方便说明,下文将所有加入分布式文件共享系统的独立计算机称之为客户机,而负责承担搜索任务的计算机即称为服务器。

1.1客户机配置

要加入该分布式文件共享系统,则需要在客户机上安装客户端软件,该软件主要负责如下方面的功能实现:

( 1) 获取共享目录结构。允许用户设置本台电脑上用于共享的文件夹,客户端会自动扫描共享文件夹的目录结构, 并将其进一步反馈给服务器,以利于共享情况的实时更新。

( 2) 实现文件及文件夹的共享。客户端还有一大功能, 即是将共享文件或文件夹以HTTP协议的形式共享和展示, 以方便其他用户浏览、下载。之所以选择HTTP服务,是因为实现协议的服务平台搭建简单,运行环境跨平台,且无需下载软件支持,而只要配有浏览器即可完成。

1.2服务器配置

系统的服务器端,其主要功能是用于收集各个客户端发来的目录索引,并将其保存到统一文件夹下,同时为用户提供一个搜索的接口用于文件检索,当用户输入关键字时,则在各个成员提供的共享目录索引中进行检索,并给出反馈结果,进而引导用户到指定地址下载文件。

综上所述不难发现,该系统的优势在于: 在某一局域网内部,再也不必配备专门的服务器来存储规模庞大的共享数据了,成员与成员之间可以根据实际需要,将自己计算机上的公用文件处于共享状态,方便他人获取; 而且用户自身则可以保留原版文件,同时拥有对所属文件的更新权,使其始终处于最新状态。从另一个角度来看,这也意味着工作者使用的每台计算机都是共享服务器,大大降低了办公成本。

2分布式文件共享系统主要功能的实现

前文对该系统的实现原理与设计思路进行了分析与论述,本节内容将重点研究该系统中的主要功能模块实现。在此,将围绕目录信息的收集、HTTP服务器的创建、共享目录结构信息的发送与接收、搜索引擎核心功能的架构等四个方面来展开设计、并研发实现。而实现语言则采用时下非常流行的Python。Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言[4]。该语言免费、跨平台,且有着强大的网络支持功能,非常适合用来实现本系统。

2.1遍历指定目录,以获取文件及文件夹

使用客户端软件来遍历共享目录中的文件与文件夹结构,是该系统实现的第一步。通过该功能,收集用户共享目录中的所有信息,将其保存为指定文件。而当用户目录中有文件或文件夹发生异动时,则再次触发遍历的功能,重新对目录进行扫描,并及时更新相应文件。因此,该部分功能可分为如下两步。

2.1.1实现目录的遍历并保存目录信息

Python语言中遍历目录有多种方法,本程序中通过定义一个getfilelist函数来实现。通过getfilelist函数将共享目录中的文件及文件夹进行遍历,并按照具体的索引规则将目录结构分行存储到指定文件中。而用于存储目录结构的文件, 则以本机的IP地址为文件名进行命名,以便于上传到服务器端时进行辨识。

以下是实现上述功能的部分代码。

( 1) 用于遍历指定目录的getfilelist函数

( 2) 用于生成索引文件的creat File函数

通过以上函数生成的目录索引内容如图1所示。可以看到,所有共享文件都已经以URL的形式出现,方便使用者检索后按相应地址下载。

2.1.2监听目录变化

监听目录变化,就是在指定的共享目录中,当发生文件夹或者文件的删除、修改文件名以及新建对象等操作时,相应的程序就会执行动作,即重新遍历目录,并生成目录列表文件。在此,给出这一功能的实现代码具体如下。

2.2创建HttpServer,以Web形式共享指定目录

加入分布式共享系统的每台计算机都会是一台独立的文件分享服务器。因而为简便起见,此处将直接采用对平台无具体要求且广受关注的HTTP超文本传输协议。

基于设计方案,将在客户端上建立一个简单HTTP服务器,并将用户共享的目录处于该服务范围内,以方便其他用户通过HTTP协议下载共享文件。

利用Python语言建立HTTP服务非常简单,其实现代码具体如下[5]。

此时,共享目录已经可以通过http: / /主机IP: 8000的形式进行访问了。

2.3发送共享目录结构,以方便服务器进行文件检索

当一台计算机加入分布式共享系统后,客户端程序会自动索引共享目录中的文件夹与文件,并将其直接生成一个索引文件。此时要做的就是将该索引文件发送到服务器端,从而在后续环节中利于有关检索用途的实现。

在Python语言中,文件的传输可以使用其Socket模块来实现[4,6],具体也分为两个部分: 一是客户机上的客户端负责发送指定文件; 二是服务器端负责接收文件,并将文件存放到指定位置。以下将分别给出客户端与服务器端的实现代码。

2.3.1客户端

在客户端的实现过程中,需要考虑的问题是: 向谁发送文件,发送什么文件,最关键的则是怎样发送文件,以下给出的是用于向服务器端发送文件的sendfile函数。该函数将在每次createfile函数( 即生成目录索引函数) 运行后调用,以确保服务器端接收到的目录索引文件就是最新的版本。该功能实现的主要代码如下。

2.3.2服务器端

服务器端只需要对指定端口进行侦听,当客户端得到发送文件的命令请求时,启动相应功能进行文件接收即可。具体功能实现的主要代码如下。

2.4建立主服务器搜索引擎,以实现分布式文件共享检索

当加入分布式共享系统的用户计算机向服务器提交了包含共享目录索引的文件后,接下来就将由服务器提供搜索反馈服务了。一般用户只需要在浏览器中输入服务器提供的搜索页面的地址,并在其提供的搜索页面中输入关键字, 服务器就会在由各个客户机提供的索引目录的文件中进行检索。当符合条件的结果出现时,则由服务器给出反馈页面,同时提供转向相应结果的下载链接。

如何建立一个Web服务器以及提供一个包含搜索框的HTML页面在这里就不做赘述了,以下主要讨论当搜索关键字传入后,Python在包含有索引目录的文件中进行检索并反馈相应结果的过程。这里用到的主要是Python的文本处理功能,具体实现代码如下。

此时,只需调用search_result( ) 函数,遍历包含索引目录文件的文件夹,传入索引文件名及关键字即可。

3分布式文件共享系统功能总结与展望

至此,一个基于Python语言的分布式文件共享系统已经成功实现。用户可以通过安装一个小的客户端,随时加入到文件共享的队伍中来,而其他使用者只需要通过一个简单的搜索功能,就可以获取到相应的文件。该系统与FTP相比更直观,与Email相比更快捷,与云协作软件相比更安全,与U盘拷贝相比效率大大提升,且共享数据规模则要远远超出以上各类方式。笔者以3颗星为满分进行评价,从获取效率、 传输方式、共享范围以及数据安全性等四项共享指标出发, 将其与时下常见的各类共享方式进行比较,得出的结果可参见表1。

考勤系统Python 篇7

网络游戏发展至今,市场竞争相当激烈,这就促使开发者必须快速、高效的响应玩家需求才能站得一席之地。传统的游戏开发中大量使用C/C++技术,虽然C/C++有着明显的性能优势,但很多时候我们关心的不是程序的运行效率,而是程序的开发效率、维护效率、可移植性等[1]。在游戏中使用Python脚本,就正好能满足这些目标,小到一些计算公式,大到游戏的控制流程都可以通过脚本完成,且Python支持运行时动态修改,能做到代码热更新。因此,构建基于Python的网络游戏脚本系统是非常具有应用价值的。

2 Python动态脚本语言简介

Python是一门优雅、简约、健壮的开源解释性语言。它诞生于1989年,由Guido Van Rossum开发设计。Python最初源自于某个研究项目,为了提高工作效率而创造的一种通用程序设计语言。经过十来年的发展,Python已经逐渐完善,由于其强大的扩展性和丰富的库支持,很多领域都出现了它的身影,譬如You Tube、豆瓣等就是使用Python技术的成功案例。Python的主要特点有[2]:

1)进入门槛低Python语法相当的简洁,编写出的程序通常短小精悍,且类似于自然语言,符合开发者的使用常识和直觉,再加上设计精巧的数据结构和内存管理,使得它成为一门容易学习的编程语言。

2)面向对象Python中面向对象的实现是通过使用自定义的类和对象来完成的,这种特性是在其设计之初就被赋予的。

3)内存管理功能Python解释器接管了内存管理,这使得开发人员可以更关注于程序本身逻辑的实现,而不必像C/C++程序员那样常常分心于内存事务的处理。正因为如此,Python开发的程序周期更短、错误更少。

4)可方便地嵌入宿主语言并与其通讯通常一些特别强调性能的地方,可以用C来编写,然后在Python中调用这些扩展模块以达到性能提升的目的。反之C/C++中也可以嵌入Python解释器,这样就可以替代动态连接库形式的接口,使得程序开发更灵活。

5)丰富的库Python的标准库包含有数百个模块,其功能涵盖与操作系统、解释器、Internet等的交互,所有这些模块都已经充分测试,可以直接在开发中使用。

3 脚本系统架构设计

脚本在游戏开发中扮演着粘合剂的角色,如何高效、快捷的使用和管理脚本,使之服务于游戏逻辑的开发并驱动整个游戏进程就是我们需要解决的问题。脚本和宿主代码通常是以事件为中心进行相互交互[3],具体在游戏中与脚本交互的就是我们的游戏引擎。从图1中我们可以得知脚本系统的基本框架,即脚本语言本身和脚本接口模块。脚本系统设计的关键在于接口模块的实现,为了提供一个通用的脚本系统设计方案,我们将脚本接口模块集成到引擎中。脚本接口模块主要作用是方便Python脚本的扩展和嵌入,为Python脚本与游戏引擎之间提供一个数据交互的通道,从而将游戏的逻辑和具体实现分离开来[4]。

3.1 脚本接口模块的总体设计

脚本接口模块的总体设计如图2所示,它由游戏世界接口、脚本对象管理器、脚本包装器、逻辑脚本、消息处理器脚本几个部分组成。其作用主要包括以下一些方面:

1)提供Python脚本能够实现游戏具体功能的接口,具体包括脚本可以创建游戏对象、修改游戏中角色对象属性、设置定时器、打印调试日志等功能,这是由游戏世界接口管理完成的。

2)便于引擎管理脚本文件,使得引擎能够根据逻辑灵活的调用相关脚本。这是通过脚本包装器将脚本文件由一个独立的管理类模块管理实现的,脚本包装器由逻辑脚本对象、消息处理器对象组成。其中消息处理器对象维护着一个消息到逻辑处理的映射关系表。

3)通过修改消息处理器对象维护的映射关系表,引擎内核可以动态的加载、修改、删除脚本对象,从而实现游戏逻辑的热更新。

通过脚本接口模块这个抽象层使得引擎与Python脚本可以相互交互,Python与C++的交互是建立在Python与C的基础上的,主要是数据格式的转换和对异常的处理。

3.2 Python调用引擎函数

本系统需要使用Python语言来实现引擎的逻辑部分,因此引擎必须为Python语言提供访问内部实体的接口,提供一个接口需要以下一些步骤:

1)引擎中创建具体的扩展模块代码。

2)脚本接口系统中编写一个单独的C源文件,并利用样板来包装代码。

(1)包含Python.h头文件,它包含了我们所需要的所有声明。

(2)为每一个函数都增加Py Object*Module_func()的包装函数,用于将Python参数转换成C程序格式类型,处理完再转换为Python对象传回给Python解释器。期间如果有错误出现,即设置模块的异常处理对象并返回NULL。

(3)增加Py Method Def Module Methods[]的数组,用于将函数名与函数实现联系起来。

(4)增加模块初始化函数init Method()。

此外,还可以通过一些自动化工具来完成上述过程,譬如使用SWIG工具,它是一种简化脚本语言与C/C++接口的开发工具,通过包装和编译C程序达到与脚本通讯的目的[5]。

3.3 引擎调用Python函数

Python被用作实现引擎中的逻辑和消息处理器,然后在需要的时候从C++中调用脚本中的函数。主要步骤如下:

1)设置编译环境,即设置Python头文件和库文件目录。

2)初始化Python解释器,Py_Initialize()。

3)调用Python脚本逻辑,并处理异常。

4)释放资源,Py_Finalize()。

4 应用案例

该脚本系统结构清晰,易于实现,利用该系统在游戏中的寻路和城战模块中使用Python脚本来完成逻辑,如图3所示,实践证明使用该脚本系统能够带来较高的开发效率,且能动态的修复线上bug,快速的响应了玩家的需求。

5 结束语

本文设计了一种基于Python的网络游戏脚本系统,通过在脚本接口模块中提供脚本调用的引擎接口,使得利用脚本就可以完成游戏逻辑,有效地降低开发的复杂性,此外,游戏逻辑和引擎的分离提高了系统的稳定性,在实际项目中使用该脚本系统取得了较好的市场效果。

参考文献

[1]于造波.脚本技术在游戏引擎中的应用[J].电脑知识与技术,2008(19):167-169.

[2]王国强,张贝克.基于Python的嵌入式脚本研究[J].计算机应用与软件,2010,27(3):107-109.

[3]王娟玲.网络游戏引擎技术的研究[J].电脑编程技巧与维护,2011(10):64-65.

[4]Diego Garces.脚本语言总述游戏编程精粹6[M].北京:人民邮电出版社,2012.

Python文本解析研究和比较 篇8

关键词:文本解析,XML文件,JSON文件

1 概述

文本文件由可打印字符组成, 人可以直接阅读和理解其形式的文件。

文本文件并非意味着文本是无结构的; 标准通用标记语言和HTML、XML都是有良好定义的结构的文本文件的好例子。通过文本文件, 可以做通过某种二进制格式所能做的每件事情, 其中包括版本管理。与直接的二进制编码文件相比,文本文件所处的层面往往更高; 前者通常直接源自实现。假定想要存储叫做uses_menus的属性, 其值既可为真, 也可为假。使用 文本文件 , 可以将其 写为 : myprop.uses_menus =FALSE把它与0010010101110101对比一下 。大多数 二进制格式的问题在于, 理解数据所必需的语境与数据本身是分离的, 人为地使数据与其含义脱离开来。数据也可 能加了密 ;没有应用逻辑对其进行解析, 这些数据绝对没有意义。但是,通过文本文件, 可以获得自描述 (外语: self-describing) 的、不依赖于创建它的应用的数据流。通常文本文件有txt, xml,html, xls, doc, json, py, c等一系列文件 , 而其中xml, xls和json是最常用来保存一些自描述的数据的文件格式, 在实际工作中用的也最广泛。

2. XML、JSON 文件

2.1 XML 文件

什么是XML?简单来说:

( 1) XML指可扩展 标记语言 ( EXtensible Markup Language)。

(2) XML是一种标记语言 , 类似HTML。

(3) XML的设计宗旨是存储和传输数据 , 而非显示数据。

(4) XML标签没有被预定义。需要自行定义标签。

(5) XML被设计为具有自我描述性。

(6) XML是W3C的标准。

XML不会做任何事情。XML被设计用来结构化、存储以及传输信息。

XML文档形成了一种树结构 , 它从“根部”开始 , 然后扩展到“枝叶”。

一个XML文档实例

XML使用简单的具有自我描述性的语法 , 如mail.xml:

2.2 JSON 文件

2.2.1 定义

(1) JSON指的是Java Script对象表示法 (Java Script Object Notation)。

(2) JSON是轻量级的文本数据交换格式。

(3) JSON独立于语言。

(4) JSON具有自我描述性 , 更易理解。

2.2.2 JSON 语法规则

JSON语法是Java Script对象表示法语法的子集。

(1) 数据在名称/值对中。

(2) 数据由逗号分隔。

(3) 花括号保存对象。

(4) 方括号保存数组。

2.2.3 JSON 名称/值对

JSON数据的书写格式是 : 名称 /值对。名称 /值对包括字段名称 (在双引号中), 后面写一个冒号, 然后是值:

2.2.4 JSON 值的类型

(1) 数字 (整数或浮点数 )。

(2) 字符串 (在双引号中 )。

(3) 逻辑值 (true或false)。

(4) 数组 (在方括号中 )。

(5) 对象 (在花括号中 )。

(6) null。

JSON对象在花括号中书写, 对象可以包含多个名称/值对:

JSON数组在方括号中书写,数组可包含多个对象 :

数组的访问: students [0] .age;

返回的内容是: 12

可以像这样修改数据:

2.3 JSON与XML异同

2.3.1相同点

(1) JSON是纯文本。

(2) JSON具有“自我描述性” (人类可读 )。

(3) JSON具有层级结构 (值中存在值 )。

(4) JSON可通过Java Script进行解析。

(5) JSON数据可使用Ajax进行传输。

2.3.2不同点

(1) 没有结束标签。

(2) 更短。

(3) 读写的速度更快。

(4) 能够使用内建的Java Script eval () 方法进行解析。

(5) 使用数组。

(6) 不使用保留字。

3 Python 对 XML 的解析

常见的XML编程接口有DOM和SAX, 这两种接口处理XML文件的方式不同 , 当然使用场合也不同。

Python有3种方法解 析XML, SAX, DOM, 以及Element Tree, 这里用到的是DOM解析 , DOM解析会将XML数据在内存中解析成一个树, 通过对树的操作来操作XML。

使用到的XML实例文件mail.xml内容如下:

一个DOM的解析器 在解析一 个XML文档时 , 一次性读取 整个文档 , 把文档中 所有元素 保存在内 存中的一 个树结构里 , 之后可以 利用DOM提供的不 同的函数 来读取或修 改文档的 内容和结 构 , 也可以把 修改过的 内容写入XML文件。

Python中用xml.dom.minidom来解析XML文件, 实例如下:

以上程序执行结果如下:

4 Python JSON 解析

Python2.6开始加入了JSON模块 , 无需另外下载 , Python的JSON模块序列化与反序列化的过程分别是encoding和decoding

encoding: 把一个Python对象编码转换成JSON字符串

decoding: 把JSON格式字符串解码转换成Python对象

对于简单数据类型 (string、unicode、int、float、list、tuple、dict), 可以直接处理。

json.dumps方法对简单数据类型encoding:

输出:

输出:

Python与JSON基础数据类型转换图如图1所示。

从上面的例子可以看出, JSON相比XML更简单, 而且相同长度的数据内容表示的内容更多, 所以在网络上传递数据时更多采用JSON格式。而XML相比是一个具有多年历史的Web标准 , 很多语言和系统都支持XML, 所以XML格式的文本文件相对来说兼容性更好, 如果应用希望获得更好的兼容性, 建议采用XML格式。

5 结语

Python正则表达式研究 篇9

1.1 基本概念

正则表达式 (Regular Expression), 又称正规表示法、常规表示法, 在代码中常简写为regex、regexp或RE。正则表达式是对字符串操作的一种逻辑公式, 就是用事先定义好的一些特定字符及 这些特定 字符的组 合 , 组成一个 “规则字符 串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

给定一个正则表达式和另一个字符串, 可以达到如下的目的:

(1) 给定的字符串是否符合正则表达式的过滤逻辑 ( 称作“匹配”)。

(2) 可以通过正则表达式 , 从字符串中获取我们想要的特定部分。

1.2 正则表达式的特点

(1) 灵活性、逻辑性和功能性非常强。

(2) 可以迅速地用极简单的方式表示复杂的字符串。

(3) 对于刚接触的人来说 , 比较晦涩难懂。

(4) 常用来匹配或提取一些特征字符串。

1.3 正则表达式定义

正则表达式由一些普通字符 (literal characters) 和一些元字符 (meta characters) 组成。普通字符包 括大小写 的字母、数字和可打印的符号, 而元字符则具有特殊的含义。

1.4 正则表达式的结构

Anchors Character-Sets Modifiers

Python处理正则表达式的模块是re模块。

1.4.1 锚定符

如表1所示。

1.4.2 字符集由普通字符和元字符组成

如表2所示。

1.4.3 修饰符

由普通字符和元字符组成, 非贪婪匹配, *?+?, 如表3所示。

2 Python 正则表达式

主要介绍Python中常用的正则表达式处理函数。Python处理正则表达式的模块是re, 要使用正则表达式, 需要先import re模块。

Python中处理正 则匹配最 常见的函 数是match和search函数。

2.1 match 函数

re.match尝试从字符串的开始匹配一个模式。

函数语法:

re.match (pattern, string, flags=0)

函数参数说明如表4所示。

匹配成功则match函数返回一个匹配的正则对象, 否则返回None。

2.2 search 函数

re.search尝试从字符串中匹配一个模式。函数语法:

函数语法:

re.search (pattern, string, flags=0)

函数参数含义和match类似。

2.3 案例

输出:

2.4 re.match 与 re.search 的区别

re.match从字符串开始起匹配指定正则表达式, 如果字符串开始不符合正则表达式, 则匹配失败, 函数返回None; 而re.search从字符串开始匹配正则表达式, 直至找到一个尽可能的匹配。

2.5 正则表达式分组

可以使用group (num) 或groups() 匹配对象函数来获取匹配表达式, 如表5所示。

以上实例执行结果如下:

3 正则表达式实例

如表6所示。

4 结语

研究了正则表达式的基本概念和在Ptyhon中的常用函数,随后结合实际例子演示了Python的正则表达式使用, 从研究可以看到正则表达式在文本匹配和文本抽取方面有着强大的功能, 在实际工作中如匹配用户邮箱或手机号, 抽取网页内容等领域有着广泛的应用。

摘要:研究了正则表达式的基本概念、定义及其元字符,讲解Python中正则表达式的常用函数和使用实例,并做了简单对比,分析了正则分组的概念并利用分组进行实际的正则匹配结果抽取。

考勤系统Python 篇10

1.1 概述

Python是一种面向对象的解释性语言,可以运行在多种操作系统上。Python具有清晰的结构、简洁的语法以及强大的功能。Python可以完成从文本处理到网络通信等各种功能。其自身已经提供了大量的模块来实现各种功能,还可以使用C/C++来扩展Python。

1.2 安装Python

在https://www.python.org/下载对应的系统版本,目前Python有两个发行版本,分别是Python 2.x和Python 3.x,程序基于Python2.7版。

2 SQLite

2.1 概述

SQLite是一款轻型的、开源的、嵌入式的关系型数据库,是遵守ACID的关系型数据库管理系统,它是一个零配置的数据库,不需要在系统中进行配置。SQLite作为一款开源数据库,被各大软件公司广泛使用,如火狐、iPhone、iPad和Android等。

下面总结下它的优点:

(1) SQLite不需要DBA,易于配置和管理。

(2) SQLite可以运行在Windows、Linux、Mac OS X上,还可以运行在许多嵌入式平台,如Android、VxWorks和Windows CE。一个完整的SQLite数据库是存储在一个单一的跨平台的磁盘文件。另外SQLite数据库在其所支持的操作系统上都是兼容的二进制,便于移植。

(3)SQLite数据库为单一文件,数据库中的所有信息都包含在一个文件内,是轻量级的,所有的文件小于500KB。

(4)SQLite事务是完全兼容ACID的,允许从多个进程或线程安全访问。

(5)SQLite支持SQL92(SQL2)标准的大多数查询语言的功能。

(6)为多种编程语言提供了接口,如C/C++Java,PHP,Python,Perl。

(7)SQLite是开源的,所有代码无需授权即可使用,任何形式使用SQLite代码都没有法律方面的限制,可以将代码用于任何商业或者非商业目的,不需要支付费用。

2.2 安装SQLite

SQLite官网(http://www.sqlite.org)提供了预编译好的二进制的SQLite,也提供源代码。支持多种操作系统,如Linux,Mac OS X,Windows,Windows Phone 8等等。使用的是Windows平台下的SQLite,版本为3.8.10.2。

3操作SQlite数据库

编写Python源码access2SQLite.py

4 结语

总结了Python操作SQLite数据库的基本方法,由于Python和SQLite都是跨平台的,很方便就可以移植,另外两者都是自由软件,可以免费试用,方便学习,方便中小企业开发使用。

参考文献

上一篇:钢结构发展设计下一篇:专业项目化