Python2中编码相关的问题很是让人蛋疼,特别是中文字符。比如本文所述的中文网页GBK编码的诡异问题。现象例如:盲录�氓��,其实网页里面正常的应该是会员分析接着上面的例子,会员这部分乱码通过repr()函数求值得到如下结果\xc3\xa4\xc2\xbc\xc2\x9a\xc3\xa5\xc2\x91\xc2\x98使用type()函数求值得到的结果为unicodeeval(repr())出来值为盲录�氓��通过查表上述6个汉字对应c3a4c2bcc2
系统 2019-09-27 17:45:40 1817
Python实现文件的全备份和差异备份之前有写利用md5方式来做差异备份,但是这种md5方式来写存在以下问题:md5sum获取有些软连接的MD5值存在问题不支持对空目录进行备份,因为md5sum无法获取空目录的md5值权限的修改md5sum无法判断解决方案:利用文件的mtimectimemtime(Modifiedtime)是在写入文件时随文件内容的更改而更改的ctime(Createtime)是在写入文件、更改所有者、权限或链接设置时随Inode的内容更
系统 2019-09-27 17:45:28 1817
保证只能运行一个脚本实例,方法是程序运行时监听一个特定端口,如果失败则说明已经有实例在跑。使用装饰器实现,便于重用复制代码代码如下:importfunctoolsdefjust_one_instance(func):'''装饰器如果已经有实例在跑则退出复制代码代码如下::return:'''@functools.wraps(func)deff(*args,**kwargs):importsockettry:#全局属性,否则变量会在方法退出后被销毁globa
系统 2019-09-27 17:45:27 1817
最近研究研究了css,少不了去网上分析一下别人的网页,但很多网站的css文件都是要么写在一行,要么一个换行都没有,看起来极其痛苦,所以写一个脚本转换一下,转换为比较有可读性的格式。下面就是这个脚本:importstring,sysimportre,StringIOTAB=4defformat(ss):f=open(ss,"r")data=f.read()f.close()dlen=len(data)i=0buf=StringIO.StringIO()sta
系统 2019-09-27 17:38:44 1817
深入理解pythontry异常处理机制#python的try语句有两种风格#一:种是处理异常(try/except/else)#二:种是无论是否发生异常都将执行最后的代码(try/finally)try/except/else风格try:<语句>#运行别的代码except<名字>:<语句>#如果在try部份引发了'name'异常except<名字>,<数据>:<语句>#如果引发了'name'异常,获得附加的数据else:<语句>#如果没有异常发生#try的
系统 2019-09-27 17:38:34 1817
myPhoneBook2.py#!/usr/bin/python#-*-coding:utf-8-*-importreclassPhoneBook(object):'''这是一个电话簿脚本。该脚本能够实现AddContact:添加联系人信息ShowContact:查找姓名显示联系人SaveContacts:存储联系人到TXT文档(存储格式――姓名:号码/号码)LoadContacts:从txt文档中载入联系人'''def__init__(self):sel
系统 2019-09-27 17:38:30 1817
在Python2.5中,with关键字被加入。它将常用的try...except...finally...模式很方便的被复用。看一个最经典的例子:withopen('file.txt')asf:content=f.read()在这段代码中,无论with中的代码块在执行的过程中发生任何情况,文件最终都会被关闭。如果代码块在执行的过程中发生了一个异常,那么在这个异常被抛出前,程序会先将被打开的文件关闭。再看另外一个例子。在发起一个数据库事务请求的时候,经常会用
系统 2019-09-27 17:38:19 1817
哦,这就是真正牛X的程序员。不过,他也仅仅是牛X罢了,还不是大神。大神程序员是什么样儿呢?他是扫地僧,大隐隐于市。先搞清楚这些名词再说别的:循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while语句。迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for语句。递归(recursion),指的是一个函数不断调用自身的行为。比如,以编程方式输出著名的斐波纳契数列。遍历(traversal),指的是按照一定的规则
系统 2019-09-27 17:38:16 1817
Python可以使用xml.etree.ElementTree模块从简单的XML文档中提取数据。为了演示,假设你想解析PlanetPython上的RSS源。下面是相应的代码:fromurllib.requestimporturlopenfromxml.etree.ElementTreeimportparse#DownloadtheRSSfeedandparseitu=urlopen('http://planet.python.org/rss20.xml')
系统 2019-09-27 17:38:13 1817
set在python里是什么意思?set是一组数,无序,内容又不能重复,通过调用set()方法创建:>>>s=set(['A','B','C'])对于访问一个set的意义就仅仅在于查看某个元素是否在这个集合里面,注意大小写敏感:>>>print'A'insTrue>>>print'D'insFalse也通过for来遍历:s=set([('Adam',95),('Lisa',85),('Bart',59)])forxins:printx[0],':',x[1
系统 2019-09-27 17:38:10 1817
在实际应用中,你将用Django模板系统来创建整个HTML页面。这就带来一个常见的Web开发问题:在整个网站中,如何减少共用页面区域(比如站点导航)所引起的重复和冗余代码?解决该问题的传统做法是使用服务器端的includes,你可以在HTML页面中使用该指令将一个网页嵌入到另一个中。事实上,Django通过刚才讲述的{%include%}支持了这种方法。但是用Django解决此类问题的首选方法是使用更加优雅的策略――模板继承。本质上来说,模板继承就是先构造
系统 2019-09-27 17:37:53 1817
python连接数据库操作,方法如下:在本机的mysql数据库中有一个名为yao的库,其中有一个名为user的表,表中的内容如图下面,则是python连接数据库的方法,及查找出表中的内容,代码如下:#!/usr/bin/python#filenameconn.pyimportMySQLdb#载入连接数据库模块try:#尝试连接数据库conn=MySQLdb.connect("localhost","root","www","yao",charset="ut
系统 2019-09-27 17:37:52 1817
对于某一类网站,管理界面是基础设施中非常重要的一部分。这是以网页和有限的可信任管理者为基础的界面,它可以让你添加,编辑和删除网站内容。一些常见的例子:你可以用这个界面发布博客,后台的网站管理者用它来润色读者提交的内容,你的客户用你给他们建立的界面工具更新新闻并发布在网站上,这些都是使用管理界面的例子。但是管理界面有一问题:创建它太繁琐。当你开发对公众的功能时,网页开发是有趣的,但是创建管理界面通常是千篇一律的。你必须认证用户,显示并管理表格,验证输入的有效
系统 2019-09-27 17:37:46 1817
主要使用json模块,直接导入importjson即可。小例子如下:#coding=UTF-8importjsoninfo={}info["code"]=1info["id"]=1900info["name"]='张三'info["sex"]='男'list=[info,info,info]data={}data["code"]=1data["id"]=1900data["name"]='张三'data["sex"]='男'data["info"]=inf
系统 2019-09-27 17:37:45 1817
一般说来,你会把模板以文件的方式存储在文件系统中,但是你也可以使用自定义的templateloaders从其他来源加载模板。Django有两种方法加载模板django.template.loader.get_template(template_name):get_template根据给定的模板名称返回一个已编译的模板(一个Template对象)。如果模板不存在,就触发TemplateDoesNotExist的异常。django.template.loade
系统 2019-09-27 17:37:43 1817