'Python' Tag

  • 通过python实现mutipart/form发送数据到paste.ubuntu.org.cn

    September 16, 2009

    paste.ubuntu.org.cn是国内很多linuxer喜爱的“在线剪贴板”,在跟网友交流时把代码、截图等发在这里,然后把网址发送给对方即可,而且对多种常见代码支持语法高亮,功能简单贴心。(不用像某网友在这个博客上篇帖子里面那样,在留言里面贴一大堆乱哄哄的代码……=。=) 虽说方便,但平时要发送文件时候还是要打开浏览器,再贴代码或者选择文件,多少有点繁琐,所以打算用python写个上传脚本,跟nautilous结合的话,上传截图就方便多了。 首先问球猫要了个ubpaste的perl的脚本,虽然我不懂perl,但发现上传部分只有10来行代码嘛……看来挺简单的,可能用urllib随便弄一下就可以了……结果发现,不行!paste.ubuntu.org.cn用的是mutipart/form协议方式的上传,而python标准库里面没有直接支持这种协议(perl却有……而且自动支持……所以几行代码搞定=。=)…… 查了一下资料后自己写了个class来实现mutipart的boundary,才知道用http来发送文件,特别是上传大文件是这么麻烦的事情……不过还好,不算很复杂,但是整个脚本下来居然有150行代码了……=。= 现在还不能直接拿来当nautilous script用,因为第一个参数是读入文字而不是文件,还在犹豫用bash来重新封装(使用curl一行就搞定上面所说的上传了)……[懒ing]

  • 玩转libnotify

    May 22, 2009

    Ubuntu 9.04一个特性就是新的通知机制Notify OSD,让人一眼看上去很酷的样子,其实只是基于libnotify的调用,别看又DBUS又OSD那么复杂,其实一点都不神秘,跟PT来: 1 2 3 4 5 6 7 8 #!/usr/bin/python #coding:utf-8   import pynotify   pynotify.init ("PT-Title") n = pynotify.Notification ("PT的贺电", "PT再次发来贺电") n.show () 没看错,就是这么几句Python,保存成文件运行试试: 哈哈,很简单吧! 如果你安装了libnotify-bin包,shell里面会有notify-send这个工具: notify-send "PT的贺电" "PT发来贺电" 差不多的效果,我就不抓图了,自己试试! 当然除了python,libnotify还能在很多种语言的库实现,我用aptitude search libnotify搜索了一下,很明显有libinotify-ruby,libnotify-dev,libnotifymm-dev分别是ruby、C、C++方式的绑定,不过,python的pynotify是Ubuntu 9.04里面默认安装的呢…… 详细的开发还是看看Ubuntu的Notification Development Guidelines吧,注意在后部分有很多example的噢!!!

  • 数据库课程作业:图书管理系统

    May 16, 2009

    上学期混混沌沌学完《数据库原理》,感觉除了会写几条SQL外没什么收获,至于DBMS的工作原理那些,在《操作系统》完全都有,但教数据库的老师不仅不知道这些联系,一丁点数据库技术前沿的信息也没“透露”过。这个学期的数据库课程设计,我用了一个通宵把基本要求的一个“图书管理系统”做完,用了pygtk作为界面和SQLite作为数据源。不过课程设计是需要搞文档的,一个字,很烦,在Google上面用“数据库课程 学生作品”搜出来了某某学校网页上面的作品,把别人的文档重新组合一下,配上我程序的插图,yeah,完工。 Python虽然在这几年逐渐流行,但是它很历史悠久(1990),一直以简洁和功能强大著称,比如内建对SQLite的支持。SQLite是“文件式数据库系统”,也是近年来发展很快的数据库系统之一,比如Firefox等软件都使用其作为后台数据的管理。SQLite秉承了Python弱类型的特点(呃,其实Python和SQLite没什么关系的,说不上秉承...),创建表的时候那些类型你可以天花龙凤地写,插入数据时更是“没王管”。这个LibiaryManager很可能是大家能在Google上能找到的技术最潮的数据库设计作业了。 为了给老师验收,pygtk在Windows下运行的环境也要设置下,不过还好,在pygtk的FTP上可以找到很新的win32版本(主页上面的链接很旧...),而且pygtk、pygobject、pycairo是单独打包的,缺一无法运行(= .=)。 程序中基本使用Treeview来处理输入和显示,不过后来感觉Treeview对录入数据很不方便。 当然啦,这次作业来自网络,当然还要回到网络中去,不保留任何版权,从这里下载:http://code.google.com/p/ptcoding/source/browse/trunk/LIBManager/

  • 错误生涯:Warning: unable to set property `editable' of type `gboolean' from value of type `gchararray'

    May 4, 2009

    Warning: unable to set property `editable' of type `gboolean' from value of type `gchararray' 做GTK编程的时候,使用TreeView控件时出现这个警告,也就是无法使单元格变为“editable”,原因出在这里: column = gtk.TreeViewColumn(columName[columnNum], renderer, editable=True) 原理解TreeViewColumn的构造函数接受的参数里面可以接受设置Cellrenderer的属性,就直接给editable设True,于是就得到以上警告。 换用add_attribute、set_attributes,均是如此。 Google上搜到同样错误警告,但是他的原因是设错值类型,我明明设了True啊…… 自己观察pygtk-demo的代码和手册,突然发现在构造函数里面给出的属性设置值不应该是直接的值,而是对应Model里面的相应column的值!看手册的描述: Zero or more attribute=column pairs may be added to specify from which tree model column to retrieve the attribute value. 呃,果然是看手册时候大意了,这么多年来还是让英语介词搞的晕头转向。如果在构造函数里面设True这个值,就会被解析为1,去对应Model里面第二栏的类型,是字符串的gchararray,当然对不上了。 解决办法是renderer.set_property("editable", True),调用继承自GObject的set_property方法来设置对象属性。

  • PyETGO 专辑下载脚本 Python练习作品

    March 10, 2009

    PyETGO 0.3 更新版下载:http://code.google.com/p/ptcoding/source/browse/trunk/PyETGO 本脚本可跨平台使用,在Win下需要wget for Windows, 把wget.exe放在脚本所在目录即可。 Wget下载:http://www.interlog.com/~tcharron/wgetwin-1_5_3_1-binary.zip 感谢Twitter上的好友mengzehe关于Win下使用的测试和提醒。 感谢Ubuntu论坛上网友的测试。 v0.3 2009.03.16     -对获取的XML列表中存在的非法字符进行过滤(解决曲名含"&"等不规则字符导致无法下载) v0.2更新 2009.03.11  -为在Win下使用本脚本,全部使用Unicode的字符串来提示(0.1有部分乱码) -修改写入Intro.txt文件的方法,使用writelines,会根据操作系统不同写入不同换行符,减少乱码 -写入文件名前过滤Win下的非法文件名字符/\:<>?|等 大概实现这样的功能: 下载http://music.etgo.cn/上的任意专辑的音乐文件 专辑的存放目录命名为“歌手名 - 专辑名” 多CD的专辑,音乐文件命名为“CD号-轨号_歌手 - 歌名”,单CD则为“轨号_歌手 - 歌名” 下载专辑的封面和封底文件cover.jpg、coverback.jpg 从页面中抽出的专辑信息和介绍文字写入Intro.txt 首次使用需要用-u和-p输入一个ETGO账户以获取Cookie,以后下载只需用-a指定一个专辑的页面 下载时可随时使用Ctrl + C中断,重新下载时自动从断点续传。 花了好几天的时间在这个脚本上,基本把Python的特性摸熟了。 ETGO是国内一个娱乐网站,有电影、Mp3等,资源不算新,格式也就192~256K那样,没太大特色,但其有自己的服务器,运营稳定,这几年来我偶尔都从那里Down些专辑,基本上浏览器的嗅探+序号批量下载就可搞定,而且速度不赖。网站的免费试听使用的是Flash的播放器,这个脚本则模拟了播放器读取列表的功能,骗回所有Mp3的原始地址,然后调用wget下载。 稍微记录下开发过程。

  • Python for S60作品:双音频电话拨号器

    March 1, 2009

    柯南剧场版《战栗的乐谱》中有这么个情景,利用双音频电话的工作原理发声拨电话。有网友利用软件生成相应波形的信号并用电脑音响验证,确实可行!详见帖子:用音响打电话(揭秘柯南电话拨号) 虽说现在的手机普及,几乎人手一部,但是在一些时候,因为资费、信号等问题,还是希望使用家里、宿舍里的固定电话,这时往往不得不看着手机屏幕一个个地拨号,感觉特别不爽……于是想到,利用上面“音响拨号”的原理做个小软件,通过读取手机内记录的电话号码发出不同的音频自动拨号…… Python for S60是个不错的平台,其继承了Python灵活简单的特点,而且也已经有好几年的发展了,各种模块相当丰富,应用趋向成熟。 关于PyS60的编程,主要有下面两个地方提供了很好的例子资源: Nokia Forum Wiki: Python (劲多例子) MobiLenin Python for S60 Tutorial (条理清晰)

  • 特效快速专治Java、Python中文问题

    February 26, 2009

    Java篇 有一个GB2312的字节串(byte[]),print输出乱码…… 特效方: byte[] chinese = ...; // String unicode = new String(chinese, "GB2312"); 如果要转回字节串: byte[] uni_chinese = unicode.getBytes(); 简析:Java的标准输出函数只认Unicode的,直接输出当然乱码了;转成String,虽然String能够存储Unicode,但是你存进去的还是GB2312,没有经过重新编码,当然乱码了。其他如Big5等同用此方。 有一个String,里面编了的却是GB2312,怎么输出都得不到正确的数据……特效方: string = new String( string.getBytes("iso-8859-1"), "GB2312"); 简析:和1类似,iso-8859-1是单字符编码,读出最原始的数据后再按GB2312来解释,转换成Unicode存入String。

  • CET终极查分程序 Python学习作品

    February 24, 2009

    CET今朝放榜,然查分网站99sushe故意把验证码那个框框改成ActiveX输入框,且不论饱受非议的ActiveX有何安全危害,相信这次查分把时间浪费在等待这个控件安装上的时间可不少,背上不少骂名。 有好事者研究了查分页面的javascript脚本,发现了一个查分的快捷方法,不过该方法很快夭折,99sushe的网管加入了检测,但魔高一尺,这同样难不倒同学们,有人发现只是检测了HTTP Header里面的Referer,使用Linux下的工具curl轻松绕过其验证,不过由于门槛提高了,不是所有人都用的上。 今天在一Linux Q群里和大家讨论这个99sushe,突然冲动要做一个查分程序,顺便锻炼下还很生手的Python,经过几个小时的折腾,CETQuery出炉了……

Page optimized by WP Minify WordPress Plugin

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org