摘要:在使用cx_freeze将python程序转换成exe的时候碰到如下错误:setup.py内容如下:import sysfrom cx_Freeze import setup, Executable# Dependencies are automatically detected, but it might need fine tuning.build_exe_options = { # "packages": ["os"], "include-files": ["security/cert.pem"...
阅读全文
随笔分类 - python相关
主要包括python各种库的使用
摘要:在linux下使用ipython的pylab模式时发现使用matplotlib绘制的图形并未之直接显示出来,而且程序也没有出现任何的错误提示,很是奇怪google之后发现原始来matplot配置信息的问题,通过调整matplotlibrc中的backend配置就可以轻松解决这一问题,解决方案如下:(1)找出matplotlibrc的具体问题 In [4]: import matplotlib In [5]: matplotlib.matplotlib_fname() Out[5]: '/usr/local/lib/python2.7/dist-packages/matplotlib/m
阅读全文
摘要:在ubuntu下从源码安装matplotlib的时候出现这样的错误:src/ft2font.h:16:22: fatal error: ft2build.h: No such file or directorysrc/_png.cpp:10:20: fatal error: png.h: No such file or directory通过查找编译信息,发现matplotlib依赖于freetype2和libpng等开发包具体解决方案如下:(1)安装freetype2开发包: sudo apt-get install libfreetype6-dev(2)安装png开发包: sudo a..
阅读全文
摘要:python操作sqlite的示例代码:import timeimport threadingimport sqlite3def nomal_producer(conn): ''' @summary: producer defination ''' counter = 0 conn.isolation_level = None conn.row_factory = sqlite3.Row while True: # insert to db cur = conn.cursor() cur.execute("IN...
阅读全文
摘要:转载一段python代码,通过urllib2使用multipart/form-data来发送文件import httplib, mimetypesdef post_multipart(host, selector, fields, files): """ Post fields and files to an http host as multipart/form-data. fields is a sequence of (name, value) elements for regular form fields. files is a sequence of
阅读全文
摘要:在写一些底层模块的时候,特别是日志模块、底层服务等,需要记录调用者的一些信息,比如module name, file name, function name, line number 等,而不是记录我们所写的底层模块的相关信息。这个时候就需要用到python的inspect模块来完成相应的功能以下代码仅作为示例:# -*- coding: utf-8 -*-'''@summary: get caller's module name, file name, function name, line number .etc@author: JerryKwan'
阅读全文
摘要:将python的logging封装更新了一下,目前支持同时向console,file,socket输出,同时在config_logging或者config_logging_plus的时候先清除根logger的所有handler,避免在某些情况下的重复输出。具体代码如下:# -*- coding: utf-8 -*-'''Modified on 2012-11-27@summary: clear old root logger handlers when reconfig logging@author: JerryKwanCreated on 2012-06-14 19:
阅读全文
摘要:在使用NoVNC的时候,需要VNCServer支持websocket,对于大多数VNCServer来说要想使用NoVNC则需要使用NoVNC自带的./utils/websockify来进行代理或者二次封装,具体操作步骤如下:一、代理方式 1.1 启动 vncserver tightvncserver -geometry 1024x768 -nolisten tcp :1 1.2 使用websockify进行代理 ./utils/websockify 6800 --web ./ localhost:5901 1.3 在vncviewer中使用6800端口进行交互二、二次封装 2.1 二次封装..
阅读全文
摘要:在使用python的时候,为了提高效率,也为了避开python的GIL限制充分发挥多核的优势,经常会使用multiprocessing模块来实现多进程处理。效率会有很大的提升,但这样一来就引入的多进程管理的问题,比如:假定父进程设定的是启动5个子进程,但在实际运行中因为种种原因有3个子进程异常退出,此时该怎么办?运行过程中想退出整个程序的运行,怎么退出更合理,更优雅?下面的python代码简单展示了如何使用signal来处理multiprocessing协作。# -*- coding: utf-8 -*-'''Created on 2012-10-14 19:50@su
阅读全文
摘要:一个简单的python日志服务器,主要目的是搜集各python logging记录的日志,将其简单汇总。源码如下:# -*- coding: utf-8 -*-'''Created on 2012-06-14 19:50@summary: a simple logging server. use gevent and logging modules@author: JerryKwan'''import osimport pickleimport loggingimport logging.handlersimport structfrom gev
阅读全文
摘要:在使用scrapy做爬虫的时候碰到一个问题,耗了挺长时间都没有解决,关键是从日志里面没有看出问题,最后还是通过阅读源码才找出问题所在。在此将问题现象以及解决方法记录一下。现象: 在一个页面中有n多的连接,url的正则表达式如下:r"en/descriptions/[\d]+/[-:\.\w]+$",大部分连接都能抓取下来,但部分如 en/descriptions/32725456/not-a-virus:Client-SMTP.Win32.Blat.ai, en/descriptions/33444568/not-a-virus:Client-SMTP.Win32.Blat
阅读全文
摘要:通过源码可以发现,tornado中也是大量使用了python中的logging模块来处理日志操作。但tornado在处理日志的时候,特别是tornado.options.parse_command_line()时将根日志的级别设置为info,这点需要特别注意!如果在tornado.options.parse_command_line()之前程序对logging的日志级别进行了设置,则很有可能会被tornado进行改写,这点需要特别注意。通过下面的代码可以很容易就能看出tornado对跟logger的级别进行了调整:import osimport sslimport loggingfrom to
阅读全文
摘要:偶然看到网上的一篇文章,Treating configuration as code with Python’s import hooks(http://www.taricorp.net/2012/treating-configuration-as-code-with-pythons-import-hook),借助python的import hooks来实现一种新颖的读取配置文件信息的方法,感觉这种想法很不错。其中展现了imp、sys.meta_path、sys.modules的应用,值得一读。现将其转载,期望更多的人能看到。Treating configuration as code wit
阅读全文
摘要:ubuntu环境下安装gevent步骤(1)环境准备 1.1 sudo apt-get install build-essential 1.2 sudo apt-get install python-dev 1.3 sudo apt-get install python-setuptools(2) 从http://code.google.com/p/gevent/downloads/list 下载原码包gevent-1.0b3.tar.gz(3) 解压 tar -xvzf gevent-1.0b3.tar.gz (4)安装greenlet, easy_install greenle...
阅读全文
摘要:采用lxml进行xml的解析操作,在使用find()和findall()方式进行操作的时候,如果match按照XPath标准写的复杂点儿,某些情况下会碰到invalid predicate错误。从lxml的官方文档上来看,lxml是支持XPath1.0标准的,可为何还报出invalid predicate错误呢?仔细查阅lxml文档才发现:原来,lxml为了和python标准库中的xml.etree.ElementTree兼容,采用了和xml.etree.ElementTree同样的策略。xml.etree.ElementTree中的find和findall对XPath的支持本身就是有限的,只
阅读全文
摘要:python标准库中的xml.etree.ElementTree使用起来很方便,对于xml的操作封装的也挺好。但有一些细节需要引起各位使用者的注意:其中xml.etree.ElementTree的find 和 findall方法并不是完全支持XPath,不用说XPath2.0,就是连XPath1.0也只是支持了其中的一小部分,可以说只是支持了XPath1.0的一个子集吧。从以下例子能很好的说明这个问题:etree.find("AUTO/PROCESS_THREAD_OPERATE/TIME")etree.find("AUTO/PROCESS_THREAD_OPER
阅读全文
摘要:为了进一步规范python代码,提高可读性、可维护性,决定在module、class、function中尽可能的加入docstring。闲暇之余就写了一个sublime text 2的plugin,可以设定使用快捷键或者context menu来自动生成docstring,既减少了敲键盘的字数,也能更规范一些。下面是自动生成的docstring截图:插件源码已经公布在github上,具体地址为:https://github.com/JerryKwan/Sublime-Text-2-pydocstring希望这个小插件能给各位采用sublime text 2写python代码的朋友有所帮助
阅读全文
摘要:转载一篇Gevent的教程gevent For the Working Python Developerhttp://sdiehl.github.com/gevent-tutorial/?utm_source=Python+Weekly+Newsletter&utm_campaign=9dc22cf663-Python_Weekly_Issue_34_May_10_2012&utm_medium=emailhttps://github.com/sdiehl/gevent-tutorial
阅读全文
摘要:项目中碰到的问题,记录如下,期望能对他人有用。def valid_XML_char_ordinal(c): """ @summary: check if the char is a valid xml character @param c: the character to be checked @see: # http://www.w3.org/TR/2008/REC-xml-20081126/#charsets @result: True/False """ return ( # conditions ordered by p..
阅读全文
摘要:在使用git提交python源码的时候出现whitespace error: trailing space at end of line的错误,仔细分析一下源文件,发现源码中的确存在行尾是空格的情况。按照常规,这样的情况是不应该出现的,而且也是无意义的,所有行尾的空格都应该去掉才对。仔细分析了一下,有可能是常用的几个python编辑器中某一个在处理trailing space的时候设置不对或者处理不当的问题:简单测试了一下:Sublime Text2 默认情况下就处理 trailing spacePython IDLE 默认情况下也处理 trailing spacepyDev/Aptana默认
阅读全文

浙公网安备 33010602011771号