tag:blogger.com,1999:blog-45376528944050410162008-05-16T13:02:11.389+08:00blog.URLShow.com徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comBlogger33125tag:blogger.com,1999:blog-4537652894405041016.post-56544178860884768122008-04-04T23:38:00.004+08:002008-04-04T23:54:17.875+08:00ThinkPad X61安装Ubuntu这两天在ThinkPad x61本本上安装ubuntu7.10。<br />方法很简单,修改一下硬盘分区,确保有足够的空闲磁盘空间,C区安装的是Vista,D区保存工作数据。<br />下载个7.10的ISO文件,解压缩到D区根目录下,关闭杀毒软件,双击wubi-cdboot.exe。<br />重启以后开始安装Ubuntu,安装过程忽略,重启以后注意Vista的启动菜单是最后一项,第一个Windows启动项目是ThinkPad的备份恢复系统。<br />刚安装好的Ubuntu是没有3D效果的。<br /><br /><code>mkdir -p ~/.config/compiz/ && echo SKIP_CHECKS=yes >> ~/.config/compiz/compiz-manager</code><br /><br />打开3D效果。<br /><br />Firefox刚安装的Google 工具栏书签不能同步,一直显示“下载书签”。<br />需要安装libstdc++5<span style="font-weight: bold;"><br />sudo apt-get install libstdc++5<br /></span>安装以后,在Firefox>工具>附加软件中禁用Google工具栏,重启Firefox再启用,重启就好了。<span style="font-weight: bold;"><br /><br /></span>徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-18913776247745979592008-03-04T13:04:00.002+08:002008-03-04T13:09:53.897+08:00增加推荐次数,记分方式修改网址秀开始记录页面的推荐邮件发送次数,修改了记分方式。每个推荐邮件等于10分,总分为推荐次数乘以10加上投票总分。这样可以让排行榜更加合理。徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-33009319997430785352008-03-03T12:20:00.002+08:002008-03-03T12:25:16.666+08:00词库扩充核文器,对目前的词库进行了一次扩充整理,可识别词汇增加到37661。<br />用户测试比较少,缺少测试信息。看来需要进行一定范围的推广。徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-41726424726772614302008-02-27T12:11:00.002+08:002008-02-27T12:14:15.383+08:00收集成语词库今天在网上收集了三万多条成语,经过整理,一次性灌入核文器,目前系统已经可以识别15525条中文词汇了,这里是指固定词组,组合搭配词组则不可计算。徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-34085228055750053342008-02-25T00:27:00.002+08:002008-02-25T09:48:33.870+08:00核文器提高文章字数限制对程序进行了一些优化,提高了运算速度。<br />将校对文章字数上限提高到一万字,争取一万字校对也控制在一秒钟内。徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-42797289108045353302008-02-23T15:54:00.003+08:002008-02-23T18:41:19.636+08:00“核文器”正式开通全国首创在线文章校对工具“核文器”正式开通。网址:<a href="http://www.hewenqi.com">www.hewenqi.com</a><br />“核文器”这个名字是我夫人首先提出的,意思是核对文章的工具,这与“核武器”没有什么关系。<br />程序开发过程并不算长,主要的工作是词库整理,通过对海量词语的分析整理,建立了现在使用的基础词库。但是错误词库还很欠缺,需要广大网友积极参与。徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-74837416650576563722008-02-22T11:52:00.004+08:002008-02-23T10:46:39.318+08:00网站日志分析服务器刚刚建起来,可是日志每天都几百兆,分析了本月21号的日志,结果如下:<br /><ul><li>qihoo.com 访问 565,973 次</li><li>yodao.com 访问 57,774 次</li><li>soso.com 访问 40,543 次</li><li>yahoo.cm 访问 6,110 次</li><li>Google.com 访问 596 次</li></ul>并且频繁查找一些不是本站的域名和不存在的文件。应该是本站的IP曾经被服务商用作虚拟主机,为至少为80个网站提供过服务。<br /><br />明白了事情的原因,不知道是该哭还是该笑,服务器被频繁访问有些压力,但是有很多人错误的访问我的主页,算不算免费广告 ^_^徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-45116057637344993492008-02-19T19:09:00.004+08:002008-02-19T19:29:03.238+08:00www.URLShow.com可以访问了我的主站 http://www.URLShow.com 今天可以访问了,以前选择了好多方法,包括自己写些CMS都不是很理想。目前选择了MoinMoin作为内容发布系统,感觉还不错,目前在调整中。徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-6977420730764463762008-02-19T11:16:00.005+08:002008-02-19T20:53:09.571+08:00iptables防火墙安装注意事项和常用命令在服务器上设置了防火墙,设置过程中不小心在把自己也给防了。。。总结一下经验教训:<br /><ul><li>远程访问的时候</li><ul><li>先 iptables -A INPUT -p tcp --dport 22 -j ACCEPT 打开ssh端口,再iptables -P INPUT DROP,否则就哭了。</li></ul><ul><li>运行 iptables -F清除记录前先iptables -P INPUT ACCEPT,否则还是个哭。</li></ul><li>有FTP SERVER需要打开21和20端口,并且</li><ul><li>打开内对内连接 iptables -A INPUT -i lo -j ACCEPT</li><li>打开客户端的已确认连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT</li><li>如果采用被动模式需要设置被动端口 pasv端口,然后用iptables -A INPUT -p tcp --dport xxxx:xxx -j ACCEPT打开被动模式端口</li></ul><li>如果apache使用proxy</li><ul><li>准许代理ip访问</li><li>在同一个服务器iptables -A INPUT -i lo -j ACCEPT就可以</li></ul><li>每次重启iptables的配置要使用iptables-restore重新载入,使用iptables-save保存配置<br /></li></ul> iptables常用命令:<br /><ul><li>清除列表 iptables -F</li><li>准许web访问 iptables -A INPUT -p tcp --dport 80 -j ACCEPT</li><li>准许某IP访问 iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j ACCEPT</li><li>禁止某IP访问 iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP</li><li>禁止为授权的访问 iptables -P INPUT DROP</li><li>打开内对内连接 iptables -A INPUT -i lo -j ACCEPT</li><li>打开客户端的已确认连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT</li><li>显示当前配置 iptables -L</li><li>保存配置 iptables-save</li><li>恢复配置 iptables-restore</li></ul>徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-26737534833452691912008-02-19T11:09:00.004+08:002008-02-19T11:25:39.946+08:00讨厌的奇虎机器人服务器才刚刚启用2天,就发现奇虎的bot不停访问,设置了robots.txt也完全没有作用。日志文件不停增长,只好设置iptables对奇虎的IP予以屏蔽。徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-55574931374032067872008-02-18T02:12:00.003+08:002008-02-18T02:22:05.522+08:00清理博客,新应用重大突破07年我在开发一套blog聚合系统,收集其他博客的信息发布到我的博客上。<br />开发过程很有意思,但最终结果根本没有实用价值。<br />昨天调整好了博客系统,今天把以前遗留下来的那些转载文章删除掉,然后发现我的博客只有寥寥数篇。<br /><br />晚上有通宵达旦,升级新应用,新应用已经可以处理英文了,她到底是个什么功能的系统呢?我现在还不能公布,开发马上就要完毕了。已经到了最终测试、最终数据输入阶段了。新系统应该会采用新的域名。徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-56869548003962336832008-02-17T01:04:00.001+08:002008-02-17T01:05:43.570+08:00urlshow终于有了自己的服务器今天URLShow终于有了自己的服务器,折腾到凌晨Blog才能够使用。徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-7724781269666553822007-07-05T09:29:00.000+08:002007-07-05T09:47:05.161+08:00Google移动手机号更改方法Google Calendar 推出移动服务好久了,前段时间我使用的很好,可是更改手机号以后,重新设定手机号码就老不给我发送校验代码。换其他手机号也不行,郁闷了好久。<br />今天突然想到是否需要把原来的服务退定,于是将00000(5个0)发送到Google移动服务的号码10666226,返回一条信息说我没有定任何服务,然后再在Google Calendar移动设置上输入手机号点发送验证码,立刻收到验证码,一切都好用了。虽然最后也不清楚到底什么原因,但还是开心的很,遇到相同问题的朋友可以如法炮制。徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-84672749173051388852007-06-28T14:43:00.000+08:002007-06-28T14:56:52.660+08:00sources.list中增加google源出错的处理方法在sources.list增加这段话引起公钥错误的话<br />deb http://dl.google.com/linux/deb/ stable non-free<br /><br />运行<br />$gpg --keyserver hkp://subkeys.pgp.net --recv-keys A040830F7FAC5991<br />$gpg --export --armor A040830F7FAC5991 | sudo apt-key add -<br /><br />或者<br /><br />$wget -q -O - http://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -<span style="font-family: monospace;"></span>徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-77862073993428948752007-04-06T10:08:00.000+08:002007-04-06T20:59:45.812+08:00SciTE输入输出编码设置刚使用SciTE的时候默认编码是ISO-88591,所以输入输出的中文会是乱码。<br />每次还需要在菜单项中选择编码为UTF-8,再选择编程语言,输出才能是中文,这样作很麻烦。<br /><br />SciTE官方网站上有详细的修改方法。<br />在.SciTEUser.properties配置文件中增加两项<br />code.page=65001<br />output.code.page=65001<br />将输入输出全部改成UTF-8<br /><br />如果操作系统不是UTF-8那么修改输出设置output.code.page<br />output.code.page=65001#UTF-8<br />output.code.page=936#GBK<br />output.code.page=950#BIG5徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-45070352832068360792007-04-05T18:05:00.000+08:002007-04-05T18:06:08.208+08:00Python 的哲学, Python 之禅优美胜过丑陋<br />明确胜过含蓄<br />简单胜过复杂<br />复杂胜过难懂<br />扁平胜过嵌套<br />稀疏胜过密集<br />易读亦有价<br />尽管实用会击败纯洁<br />特例也不能特殊到打破规则<br />除非明确地使其沉默<br />错误永远不应默默地溜掉<br />面对着不确定,要拒绝猜测的诱惑<br />应该有一个--宁肯只有一个--明显的实现方法<br />也许这个方法开始不是很明显,除非你是荷兰人<br />尽管不做通常好过立刻做<br />但现在做也要胜过不去做<br />如果实现很难解释,那它就是一个坏想法<br />如果实现容易解释,那它可能就是一个好想法<br />名字空间是一个响亮的出色想法--就让我们多用用它们<br /><br />-- Tim Peters徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-12267217989862012142007-04-04T18:03:00.000+08:002007-04-04T19:10:04.914+08:00推荐一款编辑器SciTE<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_c-3CFP-ldmQ/RhN5w_PzNPI/AAAAAAAAAPg/yrBUnDYSHEk/s1600-h/Screenshot-os.py+-+SciTE.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_c-3CFP-ldmQ/RhN5w_PzNPI/AAAAAAAAAPg/yrBUnDYSHEk/s320/Screenshot-os.py+-+SciTE.png" alt="" id="BLOGGER_PHOTO_ID_5049513489730843890" border="0" /></a><br />SciTE编辑器对编程语言支持的非常好支持三十余种语言,是专为程序员订做的的编辑器。几百K大小,启动速度很快,代码的显示非常美观,支持代码折叠、自动完成。还能根据编译输出结果跳到出错行,还有很多程序 员需要的功能。通过配置文件进行配置非常灵活同时也很复杂,适合专业人士。<br /><br />安装:<code><br />sudo apt-get install scite</code>徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-31254180315957656002007-04-04T17:21:00.000+08:002007-04-04T17:27:14.522+08:00Ubuntu下创建SciTE的python语言API自动补全文件<a href="http://scintilla.sourceforge.net/gen_python_api.zip">gen_python_api.zip</a><br /><br />#创建python.api<br />python gen_python_api.py<br />#创建api目录<br />sudo mkdir /usr/share/scite/api<br />#复制api文件<br />sudo cp python.api /usr/share/scite/api<br /><br />使用Ctrl+Enter热键调用徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-41739208028709371182007-04-04T17:15:00.000+08:002007-04-04T18:01:55.030+08:00SciTE配置文件<code>#~ api配置文件<br />api.*.py=$(SciteDefaultHome)\api\python.api<br />#~ 中文字符乱码正确显示<br />UTF-8:code.page=65001<br />GBK:code.page=936<br />Big5:code.page=950<br />#~ 最大化<br />position.width=-1<br />position.height=-1<br />#~ 滚动条<br />end.at.last.line=0<br />#~ 工具条<br />toolbar.visible=1<br />#~ 状态栏<br />statusbar.visible=1<br />#~ 背景颜色<br />selection.back=#0000FF<br />#~ 自动补全xml结束标签<br />xml.auto.close.tags=1<br />#~ 记录最近打开的文件<br />save.recent=1<br />#~ 显示行号<br />line.margin.visible=1<br />#~ 设置状态栏<br />statusbar.text.1= www.urlshow.com [ 行: $(LineNumber) , 列: $(ColumnNumber) ,共:$(NbOfLines) ] ($(OverType)) | ($(EOLMode))<br /></code><br />其他详细配置参考<a href="http://scintilla.sourceforge.net/SciTEDoc.html">SciTE文档</a>徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-55128480167561418902007-04-04T14:35:00.000+08:002007-04-04T14:51:17.470+08:00Ubuntu文件编码转换iconv中文Windows使用的字符集是GBK<br />Ubuntu默认字符集是UTF-8<br />如果想将GBK字符集的文件转换成UTF-8可以使用Ubuntu自带的工具iconv<br /><code><br />Usage: iconv [OPTION...] [FILE...]<br />转换给出文件的编码从一种到另外一种.<br /><br />输入/输出格式规范<br />-f, --from-code=NAME 原始文本编码<br />-t, --to-code=NAME 输出编码<br /><br />信息<br />-l, --list 列出所有已知编码字符集<br /><br />输出控制:<br />-c 忽略输出中的无效字符<br />-o, --output=FILE 输出文件<br />-s, --silent suppress warnings<br /> --verbose 打印进程信息<br /><br />-?, --help Give this help list<br /> --usage Give a short usage message<br />-V, --version Print program version</code><br /><br />例子: SicTE本地语言修改成中文<code><br />iconv -f GBK -t utf-8 locale.zh_gb2312.properties -o locale.properties</code><br />修改locale.properties文件<code><br />translation.encoding=GBK</code><br />成<code><br />translation.encoding=UTF-8</code><br />把locale.properties复制到/usr/share/scite徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-63487688885711933712007-03-30T16:36:00.000+08:002007-03-30T16:45:52.042+08:00Python数组排序和倒序<pre><span style="font-weight: bold;">顺序:</span><br />>>> a = [5, 2, 3, 1, 4]<br />>>> a.sort()<br />>>> a<br />[1, 2, 3, 4, 5]<br /><br /><span style="font-weight: bold;">倒序1:</span><br />>>> a = [5, 2, 3, 1, 4]<br />>>> a.sort(cmp=lambda x,y: x-y)<br />>>> a<br />[5, 4, 3, 2, 1]<br /><span style="font-weight: bold;">倒序2</span><br />>>> a = [5, 2, 3, 1, 4]<br />>>> a.sort(reverse=True)<br />>>> a<br />[5, 4, 3, 2, 1]<br /><br /><span style="font-weight: bold;">倒序3</span><br />>>> a = [5, 2, 3, 1, 4]<br />>>> a.sort()<br />>>> a.reverse()<br />>>> a<br />[5, 4, 3, 2, 1]<br /></pre>徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-44706760546271269212007-03-29T13:28:00.000+08:002007-03-29T13:41:34.293+08:00Ubuntu下使用Python开发webservicesPython开发web services非常简单容易,在Ubuntu下开发更是得心应手。<br /><br />安装Python和ZSI<br /><span style="color: rgb(153, 51, 0);">sudo apt-get install python2.4 python-zsi</span><br /><br />MyServer.py<br /><span style="color: rgb(153, 51, 0);">#!/usr/bin/env python</span><br /><span style="color: rgb(153, 51, 0);"># -*- coding: utf-8 -*-</span><br /><br /><span style="color: rgb(153, 51, 0);">import time</span><br /><span style="color: rgb(153, 51, 0);">from ZSI import dispatch</span><br /><br /><span style="color: rgb(153, 51, 0);">def getText():</span><br /><span style="color: rgb(153, 51, 0);"> return 'http://www.urlshow.com'</span><br /><span style="color: rgb(153, 51, 0);">def getTime():</span><br /><span style="color: rgb(153, 51, 0);"> return time.localtime()</span><br /><span style="color: rgb(153, 51, 0);">print "启动服务..."</span><br /><span style="color: rgb(153, 51, 0);">dispatch.AsServer(port=3333)</span><br /><br />MyClient.py<br /><span style="color: rgb(153, 51, 0);">#!/usr/bin/env python</span><br /><span style="color: rgb(153, 51, 0);"># -*- coding: utf-8 -*-</span><br /><br /><span style="color: rgb(153, 51, 0);">from ZSI.client import Binding</span><br /><span style="color: rgb(153, 51, 0);">b = Binding(host='localhost', port=3333)</span><br /><br /><span style="color: rgb(153, 51, 0);">print '%i年,%i月,%i日,%i点,%i分,%i秒'%b.getTime()[:6]</span><br /><span style="color: rgb(153, 51, 0);">print b.getText()</span><br /><br />运行结果<br /><span style="color: rgb(153, 51, 0);">2007年,3月,29日,13点,39分,7秒</span><br /><span style="color: rgb(153, 51, 0);">http://www.urlshow.com</span>徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-16563093448233100392007-03-26T21:17:00.006+08:002008-02-17T18:15:46.322+08:00清除项目里的svn(或cvs)的小技巧<p>在linxu下用<a href="http://robbin.javaeye.com/">robbin</a>的法子:</p><br /><div>find . -type d -iname ".svn" -exec rm -rf {} \; </div><br /><p>在windows下用以下法子:</p><br /><div>1、在项目平级的目录,执行dos命令:<br />xcopy project_dir project_dir_1 /s /i </div><br /><br /><br /><div>2、或者在项目根目录执行以下dos命令<br />for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"</div><br /><p>其实我介绍的第二种方法可以用来干很多事的,比如把代码中的.svn替换为任意其他文件名并在硬盘根目录下执行,就可以从硬盘上删除所有的这个文件啦。</p>徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-13533888861256644842007-03-18T19:31:00.003+08:002007-03-18T19:31:34.509+08:00[Python 学习]2.5版中字符串函数的变化<p>新版本发布了。今天在 <a title="" href="http://www.python.org">Python</a>.list 邮件列表中看到有人开始讨论字符串中的一些新功能。</p><br /><p>在2.5版中新增加了一个叫partition的函数,它可以做什么呢?举一个小例子:</p><br /><blockquote dir="ltr" style="margin-right:0px"><br /><p>>>> 'http://www.donews.net/limodou'.partition('://')<br>('http', '://', 'www.donews.net/limodou')<br>>>> 'file:/a.html'.partition('://')<br>('file:/a.html', '', '')</p><br /></blockquote><br /><p>从第一个例子可以看出,它用来根据指定的分隔符将字符串进行分割,如果字符串包含指定的分隔符,则返回一个3元的tuple,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。第二个例子说明,如果找不到指定的分隔符,则返回仍然是一个3元的tuple,第一个为整个字符串,第二和第三个为空串。</p><br /><p>那么有人要问,它与split(sep, 1)有什么区别呢?首先split返回的可能不是固定长度的返回值,它返回的是一个list,如果找到,则返回一个2元list,如果没找到,则返回一个1元的list,如:</p><br /><blockquote dir="ltr" style="margin-right:0px"><br /><p>>>> 'a.b.c'.split(',', 1)<br>['a.b.c']<br>>>> 'a.b.c'.split('.', 1)<br>['a', 'b.c']</p><br /></blockquote><br /><p>同时在找到的情况下,它并不返回分隔符。</p><br /><p>在某些情况下partition(sep)和rpartition(sep)(从右向左匹配)与split(sep, 1)和rsplit(sep, 1)的功能是类似的。不过partition其实是为了替换find,index而产生的,并不是为了替换split而产生的。在许多情况下,我们需要先通过find来找到一个位置,再进行分割。而使用partition就方便得多。如:</p><br /><blockquote dir="ltr" style="margin-right:0px"><br /><p>>>> a = 'http://www.donews.net'<br>>>> pos = a.find('://')<br>>>> if pos > -1:<br>... print a[:pos], a[pos+1:]<br>http www.donews.net</p><br /></blockquote><br /><p>而使用partition:</p><br /><blockquote dir="ltr" style="margin-right:0px"><br /><p>>>> a = 'http://www.donews.net'<br>>>> left, sep, right = a.partition('://')<br>>>> print left, right<br>http www.donews.net</p><br /></blockquote><br /><p>是不是简单一些呢。</p><br /><p>同时在2.5版中,startswith和endswith有变化,它的第一个参数可以是一个tuple了。这样用在判断几种情况的时候非常方便。比如要判断文件名后缀,原来只支持一个值时,可能要先拆分,再判断,用不上endswith,如:</p><br /><blockquote dir="ltr" style="margin-right:0px"><br /><p>>>> a = 'a.gif'<br>>>> import os.path<br>>>> ext = os.path.splitext(a)[1]<br>>>> if ext in ['.gif', '.png', '.bmp']:<br>... print 'found'<br>...<br>found</p><br /></blockquote><br /><p>而现在可以:</p><br /><blockquote dir="ltr" style="margin-right:0px"><br /><p>>>> a = 'a.gif'<br>>>> if a.endswith(('.gif', 'png', '.bmp')):<br>... print 'found'<br>...<br>found</p><br /></blockquote><br /><p>是不是简单多了。注意,上面的tuple我换成list就是不行,看来是强制的。</p><br /><p>许多有趣的东西等着你我来发现。</p><img src="http://blog.donews.com/limodou/aggbug/1042091.aspx" width="1" height="1">徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.comtag:blogger.com,1999:blog-4537652894405041016.post-64615160055964022402007-03-18T19:31:00.001+08:002007-03-18T19:31:33.022+08:00[Python 新闻]2.5版正式发布了<p>新时刻到来了,许多新特性的增加,新模块的加入使得 <a title="" href="http://www.python.org">Python</a> 更为人所注目。这一新版本增加的功能的确很多,以至于Anthony Baxter在邮件列表中宣布新版本发布时都说:</p><br /><blockquote dir="ltr" style="margin-right:0px"><br /><p>It's been nearly 20 months since the last major release <br>of Python (2.4), and 5 months since the first alpha <br>release of this cycle, so I'm absolutely thrilled to be <br>able to say: <br><br>On behalf of the Python development team <br>and the Python community, I'm happy to <br>announce the FINAL release of Python 2.5. <br><br>This is a *production* release of Python 2.5. Yes, that's <br>right, it's finally here.</p><br /></blockquote><br /><p>在新版本发布时还有些战战兢兢(thrilled)的感觉。真是经过了很多的努力啊。</p><br /><p>关于新特性早就说过了。有兴趣的赶快下载吧!</p><img src="http://blog.donews.com/limodou/aggbug/1041855.aspx" width="1" height="1">徐晨阳http://www.blogger.com/profile/08410353282051779799noreply@blogger.com