python
文章平均质量分 69
python資深小白
程序员
展开
-
【Python】递归和栈溢出
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。比如python 默認的遞歸深度為1000, 所以如果直接執行func(1.原创 2022-02-09 22:42:10 · 1468 阅读 · 0 评论 -
用py2exe打包成一个exe文件
一、简介py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序。py2exe是发布在开源许可证下的。二、安转载 2013-10-21 13:42:47 · 34313 阅读 · 1 评论 -
Python的学习(三十二)---- ctypes库的使用整理
Python中ctypes的使用整理ctypes是Python的一个外部库,提供和C语言兼容的数据类型,可以很方便地调用C DLL中的函数。ctypes的官方文档在这里。1. ctypes基本数据类型映射表参数类型预先设定好,或者在调用函数时再把参数转成相应的c_***类型。ctypes的类型对应如下:ctypes typeC typePyt原创 2013-10-12 00:01:09 · 120486 阅读 · 7 评论 -
Python的学习(三十一) ---- 使用ConfigParser模块读写ini文件
使用ConfigParser模块读写ini文件ConfigParserPython的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。RawCnfigParser是最基础的ini文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变转载 2013-09-16 13:22:23 · 21206 阅读 · 0 评论 -
Python的学习(二十九)---- linux下python调试
之前一直在window下写python脚本,习惯用eclipse调试编辑,突然换到在linux环境下,有点不适应。。。python有自带的pdb库,可以实现简单的调试功能,基本命令与gdb类似,不过功能不会有gdb那么强大,pdb主要支持多断点设置(可条件设置),代码级单步调试,查看堆栈信息,代码查看,post-mortem调试,详细信息可以查看: http://docs.python原创 2013-09-04 12:42:18 · 21944 阅读 · 0 评论 -
Python的学习(三十) ---- socket编程
套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要。和大多数语言一样,Python 支持面向连接和无连接。面向连接即需要先连接然后通讯, 面向连接主要协议就是传输控制协议(tcp),要创建tcp套接字时需要指定原创 2013-09-09 14:32:05 · 7551 阅读 · 0 评论 -
Python的学习(二十八)----字符串操作与列表使用
字符串操作在python有各种各样的string操作函数。在历史上string类在python中经历了一段轮回的历史。在最开始的时候,python有一个专门的string的module,要使用string的方法要先import,但后来由于众多的python使用者的建议,从python2.0开始, string方法改为用S.method()的形式调用,只要S是一个字符串对象就可以这样使用,而原创 2013-09-02 13:38:20 · 1757 阅读 · 0 评论 -
Python的学习(二十七)---- 遍历目录树
Python遍历目录树 用python检查一个目录或某个包含子目录的目录树,并根据某种模式迭代所有的文件(可能包括子目录)。标准文件数遍历生成器os.walk既强大又灵活,不过os.walk还缺乏应用程序需要的一些细节上的处理能力,例如根据某种模式选择文件,对所有文件(或目录)进行排序,或只遍历当前目录不进入其子目录,因此需要对接口对应进行封装。import os, fnmatch原创 2013-08-29 13:08:53 · 2491 阅读 · 0 评论 -
Python的学习(二十六)---- 压缩与解压缩文件
Python压缩与解压缩文件 Python能够直接处理zip文件中的数据,并原创 2013-08-28 11:22:35 · 28264 阅读 · 2 评论 -
Python的学习(二十五)-- os.path模块
官方文档:http://docs.python.org/library/os.path.html转载自:http://www.cnblogs.com/dkblog/archive/2011/03/25/1995537.htmlos.path.abspath(path) #返回绝对路径 (文件中取__file__)os.path.basename(path) #返回文件名os转载 2013-07-01 14:44:07 · 1967 阅读 · 0 评论 -
Python的学习(二十四)-- 参数传递
通常情况下,Python内的参数传递与C非常类似,另外,对于元组及字典的存在而引入类似指针作用的带星号传参方式,函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析,在python中函数参数的定义主要有四种方式:1.F(arg1,arg2,...)这 是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函原创 2013-06-16 20:10:31 · 1489 阅读 · 0 评论 -
Python的学习(二十二)---Python中的对象复制
引用Python Cookbook中的话,要想成为一个好的Python程序员,必须了解修改对象和将对象赋值给变量的区别,赋值使用的是引用。类似a=[]这样的语句,是对名字a做了重新绑定,但却不会影响原先绑定到a的对象,因此,完全没有引用和拷贝的问题。只有当需要修改某些对象的时候,引用和拷贝才有可能成为问题。在这之前有个问题需要先说明,python中的对象包含三要素:id, type, valu原创 2013-04-23 10:56:58 · 1105 阅读 · 0 评论 -
Python的学习(二十三)---python实现网站自动登录
由于目前的Web开发中AJAX、Javascript、CSS的大量使用,一些网站上的重要数据是由Ajax或Javascript动态生成的,并不能直接通过解析html页面内容就能获得(例如采用mechanize、lxml、Beautiful Soup )。要实现对这些页面数据的爬取,爬虫必须支持Javacript、DOM、HTML解析等一些浏览器html、javascript引擎的基本功能。原创 2013-05-16 10:13:00 · 4912 阅读 · 0 评论 -
Windows下采用PyInstall将py文件转换成exe可执行文件
好不容易写完的py文件,想做成exe文件,最开始选择用py2exe,结果生成的exe遇到两个问题,1. py程序里print 的信息,cmd中执行tool后并没有显示在屏幕上;2. 调用dll接口,执行py文件时是阻塞等待的,结果cmd中执行exe时,tool很快先返回了,接口还在运行,很诡异一时找不到解决的办法,无奈弃用了,在网上找了pyinstall,试了一下,感觉功能更强大些。。原创 2013-10-21 15:52:42 · 14328 阅读 · 1 评论 -
Linux下安装pyinstaller用于将py文件打包生成一个可执行文件
听说pyinstaller多平台支持的比较好,考虑在linux(redhat 6 32-bit)上装个pyinstall,不过真的是遇到太多问题了。。。下面是安装和使用流程:安装使用流程1. 首先给系统装个easy_install, 如果装了的可以跳过这步到pypi官方网址 https://pypi.python.org/pypi/setuptools 去d原创 2013-10-22 13:36:04 · 46575 阅读 · 3 评论 -
采用python中SQLalchemy模块访问数据库(三)
采用python中SQLalchemy模块访问数据库(三)上一篇中结合SQLAlchemy中ORM部分实现一个Mapper对象,将类的实例对应表中的记录,实例的属性对应字段。实现一个Data Mapping需要三个元素:Tabella Metadata, user-defined class, mapper对象,这三个是实现对象对表映射的基本元素,在此基础上,可实现一对多的映射,实现类似多表查原创 2012-10-12 00:08:20 · 2496 阅读 · 0 评论 -
Python的学习(十四)---- 实现简单的HTTP服务器
用Python实现简单的HTTP服务器用于搭建http server的模块有如下三种:1)BaseHTTPServer:提供基本的Web服务和处理器类,分别是HTTPServer及BaseHTTPRequestHandler;2)SimpleHTTPServer:包含执行GET和HEAD请求的SimpleHTTPRequestHandler类;3)CGIHTTPServer:包含处原创 2012-10-18 21:41:12 · 59934 阅读 · 3 评论 -
python源码剖析----第三章(上)
字符串对象是Python变长对象中的不可变对象,对象的长度在对象创建时才能被确定,但对象创建之后其所维护的数据就不能再改变。对于PyStringObject的定义如下:[stringobject.h]typedef struct{ PyObject_VAR_HEAD long ob_shash; int ob_sstate; char ob_sval[1];/*作为字符指针指向对原创 2014-02-20 00:47:07 · 1521 阅读 · 0 评论 -
Python源码剖析----第二章
第二章 Python的整数对象2.1 基本概念在Python中,整数对象是不可变对象,即创建一个PyIntObject对象之后,就再也不能改变该对象所维护的那个真实的整数值了。但在实际Python的应用程序中,整数的使用太过广泛,为避免频繁创建,Python为整数对象使用了一个巧妙的缓冲池机制。事实上,几乎python中所有的内建对象,都会有自己特有的对象池机制。[intobject原创 2014-02-17 22:24:04 · 1740 阅读 · 0 评论 -
Python源码剖析----第一章
第一章1.1 Python的内建对象在python中,对象就是为C中的结构体在堆上申请的一块内存,一般不能被静态初始化但是,类型对象是唯一的例外,python中所有的内建的类型对象都是被静态初始化的。Python中的内建对象的头结构都是对Pyobject结构的扩展,PyObject是整个Python对象机制的核心。[object.h]typedef struct _obje原创 2014-02-16 23:49:09 · 2319 阅读 · 0 评论 -
Python源码剖析----第三章(下)
PyStingObject对象的intern机制根据之前讨论的PyStringObject对象创建的方式,假设创建一个String对象a,其表示的字符串是“Python”, 随后若再一次为字符串"Python“创建一个String对象,通常情况下,Python会重新申请一个内存来创建一个新的PyStringObject对象b,a与b是完全不同的两个对象,各占一段内存,尽管其内部维护的字符数组是原创 2014-02-25 17:41:53 · 1762 阅读 · 0 评论 -
Python的学习(三十) ---- Python实现文件md5校验
Linux下校验文件MD5值,最简单的方法就是执行md5sum命令md5sum filename原本打算用subprocess调用系统命令来获取md5值,import subprocess,shlexcmd = "md5sum filename"p = subprocess(shlex.split(cmd), stdout=subprocess.PIPE)print p.s原创 2013-12-26 13:28:26 · 44000 阅读 · 2 评论 -
Python用subprocess的Popen来调用系统命令
当我们需要调用系统的命令的时候,最先考虑的os模块。用os.system()和os.popen()来进行操作。但是这两个命令过于简单,不能完成一些复杂的操作,如给运行的命令提供输入或者读取命令的输出,判断该命令的运行状态,管理多个命令的并行等等。这时subprocess中的Popen命令就能有效的完成我们需要的操作。在这里对Popen予以简单介绍。下面是一个很简单的例子,来自Python的官网转载 2013-12-26 10:20:46 · 11852 阅读 · 0 评论 -
Python下删除文件与文件夹(目录)
比较传统的,是使用os模块,删除文件os.remove()删除空目录os.rmdir()递归删除父目录os.removedirs() #当子目录为空,将递归删除给定父目录,否则抛出异常但是若需要删除的是非空目录时,则需要通过递归逐一删除文件后再删除目录网上有人通过system命令来实现,但是不同操作系统下会有区别:windows系统下os.sys原创 2013-12-06 11:40:55 · 15556 阅读 · 0 评论 -
收集到一些关于python的文章,存起来慢慢看。。。
newthreading - safer concurrency for Python 安全并发(1回应) http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost&gid=73&tid=7607 几个 Google App Engine 开源的Blog程序 http://www.转载 2013-11-27 23:06:19 · 2918 阅读 · 2 评论 -
python调用动态链接库传送protobuf数据
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://padden.blog.51cto.com/2514314/441612什么是protobuf protobuf是Google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多转载 2013-11-06 13:00:44 · 2395 阅读 · 0 评论 -
Python库文件地址备份
python版本在变,库文件也在变,留个比较全的地址备份http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql原创 2013-11-06 11:54:40 · 1239 阅读 · 0 评论 -
Python的学习(二十一)----Python的静态变量
一直以来用python做测试,可能没有很深入的了解,前段时间在论坛里面有人提问说,class foo():member1member2...self.member1foo.member2其中的两个成员member1, member2有什么区别。。。这才知道python中也有自己的全局静态变量。其实例的属性是实例的,如上class中的member1,对它进行+/-操作原创 2013-03-23 16:14:02 · 23799 阅读 · 0 评论 -
python的学习(二十)--面向对象编程
面向对象的编程转载本文主要是学习类变量与对象变量到目前为止,在我们的程序中,我们都是根据操作数据的函数或语句块来设计程序的。这被称为面向过程的编程。还有一种把数据和功能结合起来,用称为对象的东西包裹起来组织程序的方法。这种方法称为面向对象的 编程理念。在大多数时候你可以使用过程性编程,但是有些时候当你想要编写大型程序或是寻求一个更加合适的解决方案的时候,你就得使用面向对象的编程技术。转载 2013-03-07 11:04:45 · 3839 阅读 · 0 评论 -
python的学习(十二)----异常处理(3)
异常处理(3)一、异常基础try/except:捕捉由代码中的异常并恢复,匹配except里面的错误,并自行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行try语句后面的程序)try/finally: 无论异常是否发生,都执行清理行为 (发生异常时程序会中断程序,只不过会执行finally后的代码)raise: 手动在代转载 2012-12-17 11:23:05 · 8438 阅读 · 0 评论 -
Python的学习(十一)----异常处理(2)
异常处理Assert(2)Python中assert的运用于C语言中的assert()函数相似,主要功能在于确保程序中的某个条件一定为真时,才能让程序执行,否则终止程序执行并触发AssertionError错误其可以视为相对高级点的异常处理语法:assert expression1, expression2 (不用小括号)其中,expression1 表示程序继续执行的原创 2012-10-24 15:10:49 · 2692 阅读 · 0 评论 -
Python的学习(八)----py脚本中调用应用程序
Python的学习(八)----py脚本中调用应用程序在Python脚本执行过程中,如需要运行另一个程序,或执行相关命令时,一般有几种方法:1. os.system(command)在子终端中执行系统命令command, 在命令执行完后退出并返回执行状态。无法捕捉命令执行过程返回的具体信息2. os.popen(command, type)打开一个与command进程之间的原创 2012-10-23 13:26:54 · 7814 阅读 · 1 评论 -
Python的学习(四)----特殊类型-字典
Python中的特殊类型-字典映射(mapping)是指通过不可变对象来引用值的数据结构,字典是Python中唯一内建的映射类型,其是由多个键(key)及与其对应的值构成的对组成,键是唯一的,但值不唯一,且存储没有特定的顺序,字典中键的类型可以是数字、字符串或元组。eg: 字典的创建 dic= {'Allen':'1111', 'Bob':'2222', 'Cici':'3333'原创 2012-10-15 21:59:47 · 1760 阅读 · 0 评论 -
python的学习(三)----中括号的使用
python中括号的使用学习了那么久,最近终于开始使用python进行系统编程,发现学习跟实际操作还是有很大区别的,尤其用到元组,列表等数据的时候,具体改用中括号,圆括号,还是大括号,都混乱了,上网查了下,根据实际应用,稍微做下分析总结:1. 列表list是用[ ]包住的以逗号分隔的数据集合 所有对列表的解析均采用[ ],不论是元素引用或取值 [ ]表示空列表原创 2012-11-07 18:06:53 · 21084 阅读 · 0 评论 -
采用python中SQLalchemy模块访问数据库库(二)
采用python中SQLalchemy模块访问数据库(二)上一篇中提到,通过create_engine创建数据库引擎,并新建一个MetaData对象,MetaData对象收集了描述table对象等的元数据类,将其与genine进行绑定,然后通过Table函数构造三张表,通过执行create_all()将表创建在数据库中,通过mapper实现表与Python类的映射。对于已经存在于数据库原创 2012-10-08 16:48:28 · 1954 阅读 · 0 评论 -
Python的学习(六)----文件和输入输出处理
Python中的文件和输入输出处理1. 文件对象的概念文件对象不仅可以用来访问普通的磁盘文件,还可以访问任何其他类型抽象层面上的文件。例如实时地“打开一个URL”来读取Web页面,在另一个独立的进程中执行一个命令进行通信,就好像是两个同时打开的文件,一个用于读取,另一个用于写入 2. 文件内建函数1) open(),file()打开文件后返回对应的文件对象(或称为句原创 2012-10-04 17:03:16 · 1456 阅读 · 0 评论 -
采用python中SQLalchemy模块访问数据库(一)
采用python中SQLalchemy模块访问数据库 1. SQLalchemy简介SQLAlchemy是一个开源的SQL工具包,基本Python编程语言的MIT许可证而发布的对象关系映射器。SQLAlchemy提供了“一个熟知的企业级全套持久性模式,专为高效率和高性能的数据库访问而设计“。SQLAlchemy的首次发布2006年2月,并已迅速成为最广泛使用的对象关系映射在Python原创 2012-10-04 20:30:08 · 11957 阅读 · 1 评论 -
Python调用windows下DLL详解 - ctypes库的使用
在python中某些时候需要C做效率上的补充,在实际应用中,需要做部分数据的交互。使用python中的ctypes模块可以很方便的调用windows的dll(也包括linux下的so等文件),下面将详细的讲解这个模块(以windows平台为例子),当然我假设你们已经对windows下怎么写一个DLL是没有问题的。 引入ctypes库 [python] view pla转载 2012-12-06 15:52:54 · 4544 阅读 · 0 评论 -
python的2.5与2.7版本中ftp模块的一个小区别
今天原本计划更换下python的版本,从2.5升级到2.7, 结果发现很多模块貌似不通,目前找出其中一个关于ftp模块的区别,查看了python中ftplib模块中的实现,版本间更新导致的代码中关于ftp的实现: ftp = FTP() ftp.connect(ftpip,'') ftp.login(ftpusername,ftppwd)原创 2012-12-04 14:09:21 · 5299 阅读 · 0 评论 -
Eclipse在已创建的project中导入其他文件
Eclipse在已创建的project中导入其他文件前两天被同事问到,如何通过不拷贝源文件的方式,在之前已经创建好的project中直接导入其他目录下的文件,整理了一下,将目前所知道的eclipse文件导入方式稍微做个总结:1. 直接导入已经创建好的project 通过eclipse直接import -> existing project2. 创建新项目原创 2012-11-20 13:45:54 · 14890 阅读 · 0 评论