2007年03月24日 星期六 10:33
´ÖÂÔ¿´ÁËһϣ¬ÎҼǵÃURLconfµÄÁíÒ»ÖÖд·¨ºÃÏñÊÇ limodou Ìá³öÀ´µÄ¡£ from django.conf.urls.defaults import * from mysite.myapp.views import myview urlpatterns = patterns('', ('^myview/$', myview) ) -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070324/b7df9ffd/attachment.htm
2007年03月24日 星期六 10:53
On 3/24/07, Gu Yingbo <tensiongyb在gmail.com> wrote: > 粗略看了一下,我记得URLconf的另一种写法好像是 limodou 提出来的。 > from django.conf.urls.defaults import * > from mysite.myapp.views import myview > > urlpatterns = patterns('', > ('^myview/$', myview) > > ) > 这是在djangobook上首先说的。 -- I like python! UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad My Blog: http://www.donews.net/limodou
2007年03月24日 星期六 14:47
Á¢ÂíÏÂÔØ£¬È»ºó²âÊÔLimodouÐֵı¸·Ý¹¤¾ß ËùÓеĸüж¼Í£ÖÍÔÚÕâÀïÁË£¬Êý¾Ý¿â²»Äܱä¸ü£¬±¯²Ò¡£ºÇºÇ¡£¾ÍµÈ0.96 -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070324/dcddd3c2/attachment.html
2007年03月24日 星期六 15:58
最近把工作基本都转到了Ubuntu下面,程序员还是用*nix最方便啊,支持多多。想 用gmailfs把一些东西备份到gmail里去,反正google这么慷慨的提供了这么好的服 务,不用白不用;-) ubuntu安装软件那个是爽,sudo apt-get instal gmailfs就搞定了,看了一下说 明,配了gmailfs.conf,开始mount,cp....,ls,直接出错,中文文件名不支 持!怎么办?马上去gmailfs作者的主页看看。有一个0.7.3版本发布,有一个 bugfix “The failure to handle some text encoding for non-English languages“。OK, 下载下来换上一试,还是不行。怎么办?没办法了,只好打开 编辑器,看看代码了。 先在出错代码处加上log.debug: def getdir(self, path): ..... for thread in folder: assert len(thread) == 1 for msg in thread: log.debug("thread.summary is " + thread.snippet) m = re.search(FileNameTag+'='+FileStartDelim+'(.*)'+ FileEndDelim, thread.snippet) if (m): # Match succeeded, we got the whole filename. log.debug("Used summary for filename") filename = m.group(1) else: # Filename was too long, have to fetch message. log.debug("Long filename, had to fetch message") body = fixQuotedPrintable(msg.source) log.debug('body='+body+' '+ FileNameTag+'='+FileStartDelim +'(.*)'+FileEndDelim) #这里加上 m = re.search(FileNameTag+'='+FileStartDelim +'(.*)'+ FileEndDelim, body) filename = m.group(1) ..... 然后把gmailfs.conf的[logs]的level设为debug。 再试,哦,原来body是base64编码的,OK,我们来看看fixQuotedPrintable都干了 些什么活: ubuntu带的0.7.2版的: def fixQuotedPrintable(body): fixed = body if re.search("Content-Transfer-Encoding: quoted",body): fixed = quopri.decodestring(body) # Map unicode return fixed.replace('\u003d','=') 新版0.7.3的: def fixQuotedPrintable(body): # first remove headers newline = body.find("\r\n\r\n") if newline >= 0: body = body[newline:] fixed = body if re.search("Content-Transfer-Encoding: quoted",body): fixed = quopri.decodestring(body) # Map unicode return fixed.replace('\u003d','=') 注意到没,加了newline。先把base64的decodestring加上, def fixQuotedPrintable(body): # first remove headers newline = body.find("\r\n\r\n") if newline >= 0: body = body[newline:] fixed = body if re.search("Content-Transfer-Encoding: quoted",body): fixed = quopri.decodestring(body) if re.search("Content-Transfer-Encoding: base64",body): fixed = base64.decodestring(body) # Map unicode return fixed.replace('\u003d','=') 加上import base64, 试一下,不行,再仔细看一下代码,哦,看出问题出来了 没?原来他已经先把header去掉了,所以 re.search("Content-Transfer-Encoding: base64",body)做的是无用功啊。怎么 改?先保留他的代码,不要动他,加上: def fixQuotedPrintable(body): # first remove headers newline = body.find("\r\n\r\n") body_orig = body # 加一个变量保存有header的body if newline >= 0: body = body[newline:] fixed = body if re.search("Content-Transfer-Encoding: quoted",body_orig): fixed = quopri.decodestring(body) if re.search("Content-Transfer-Encoding: base64",body_orig): fixed = base64.decodestring(body) # Map unicode return fixed.replace('\u003d','=') OK,这下ls不会出错了,大功....,等等,ls出来中文名是乱码啊,哥们,别高兴 得太早;-) 没办法,那就把charset加上吧: def fixQuotedPrintable(body): # first remove headers newline = body.find("\r\n\r\n") body_orig = body # check encoding charset_match = re.search("charset=([^;]+)",body_orig) # 这里解析 encoding charset if newline >= 0: body = body[newline:] fixed = body if re.search("Content-Transfer-Encoding: quoted",body_orig): fixed = quopri.decodestring(body) if re.search("Content-Transfer-Encoding: base64",body_orig): fixed = base64.decodestring(body) if charset_match: fixed = unicode(fixed,charset_match.group(1)).encode('utf-8') # Map unicode return fixed.replace('\u003d','=') OK,ls出来正确的文件名,再试试把它cp回来看看,糟糕,出错,似乎找不到 inode为XXXXXXXX的数据邮件,看了一下gmail邮箱,有啊。再仔细看一下他的代 码,没有发现什么问题,难道是“灵异”事件?不会这么好彩吧;-) 多年的编程经验 告诉我,不会有什么邪门的事,一定是事出有因,多半是我自己的问题。我是相信 gmailfs代码的质量,不至于最基本的问题都搞不定,google我也相信不会乱来, 那一定是我的问题了。那我的问题在哪里呢?仔细看看我的邮箱,search一下,1 个2个3个4个,等等,别的英文名文件都是3个,这个为什么是4个,而且有一个内 容里s=0 (s是sizeTag),难怪,干掉这个邮件,再试,终于OK了。 开始cp...., 另发一封简短的邮件附上修改给gmailfs的作者,顺道感谢感谢他^_^ 虽然这是我第一次接触gmailfs,不过读懂代码并不是什么难事,python的代码的 可读性又是特别的好。还在害怕读代码的人们,不要站在岸边看风景,跳进源码的 海洋里游泳吧! 附注:查看发件箱,这是22号晚上的事,今天把它补记下来,也作一点点些微的贡 献吧。另多出一个邮件的无头公案,就交给在座的各位看官,再世的包青天包大 人.....^-^ vcc _ 都是我的错,让你多一个,不该乱把Ctrl-C拼命的按;-)
2007年03月24日 星期六 16:27
so Great Great story! 收集在微项目中了:: http://wiki.woodpecker.org.cn/moin/MicroProj/2007-03-24 感谢分享一次 Pythonic 的愉快体验!期望大家都将生活/工作 中使用Python 的各种体验公布分享出来哪! On 3/24/07, vcc <vcc在163.com> wrote: > 最近把工作基本都转到了Ubuntu下面,程序员还是用*nix最方便啊,支持多多。想 > 用gmailfs把一些东西备份到gmail里去,反正google这么慷慨的提供了这么好的服 > 务,不用白不用;-) > > ubuntu安装软件那个是爽,sudo apt-get instal gmailfs就搞定了,看了一下说 > 明,配了gmailfs.conf,开始mount,cp....,ls,直接出错,中文文件名不支 > 持!怎么办?马上去gmailfs作者的主页看看。有一个0.7.3版本发布,有一个 > bugfix "The failure to handle some text encoding for non-English > languages"。OK, 下载下来换上一试,还是不行。怎么办?没办法了,只好打开 > 编辑器,看看代码了。 > > 先在出错代码处加上log.debug: > def getdir(self, path): > ..... > for thread in folder: > assert len(thread) == 1 > for msg in thread: > log.debug("thread.summary is " + thread.snippet) > m = re.search(FileNameTag+'='+FileStartDelim+'(.*)'+ > FileEndDelim, thread.snippet) > if (m): > # Match succeeded, we got the whole filename. > log.debug("Used summary for filename") > filename = m.group(1) > else: > # Filename was too long, have to fetch message. > log.debug("Long filename, had to fetch message") > body = fixQuotedPrintable(msg.source) > log.debug('body='+body+' '+ FileNameTag+'='+FileStartDelim > +'(.*)'+FileEndDelim) #这里加上 > m = re.search(FileNameTag+'='+FileStartDelim > +'(.*)'+ > FileEndDelim, body) > filename = m.group(1) > ..... > 然后把gmailfs.conf的[logs]的level设为debug。 > 再试,哦,原来body是base64编码的,OK,我们来看看fixQuotedPrintable都干了 > 些什么活: > ubuntu带的0.7.2版的: > def fixQuotedPrintable(body): > fixed = body > if re.search("Content-Transfer-Encoding: quoted",body): > fixed = quopri.decodestring(body) > # Map unicode > return fixed.replace('\u003d','=') > 新版0.7.3的: > def fixQuotedPrintable(body): > # first remove headers > newline = body.find("\r\n\r\n") > if newline >= 0: > body = body[newline:] > fixed = body > if re.search("Content-Transfer-Encoding: quoted",body): > fixed = quopri.decodestring(body) > # Map unicode > return fixed.replace('\u003d','=') > 注意到没,加了newline。先把base64的decodestring加上, > def fixQuotedPrintable(body): > # first remove headers > newline = body.find("\r\n\r\n") > if newline >= 0: > body = body[newline:] > fixed = body > if re.search("Content-Transfer-Encoding: quoted",body): > fixed = quopri.decodestring(body) > if re.search("Content-Transfer-Encoding: base64",body): > fixed = base64.decodestring(body) > # Map unicode > return fixed.replace('\u003d','=') > 加上import base64, 试一下,不行,再仔细看一下代码,哦,看出问题出来了 > 没?原来他已经先把header去掉了,所以 > re.search("Content-Transfer-Encoding: base64",body)做的是无用功啊。怎么 > 改?先保留他的代码,不要动他,加上: > def fixQuotedPrintable(body): > # first remove headers > newline = body.find("\r\n\r\n") > body_orig = body # 加一个变量保存有header的body > if newline >= 0: > body = body[newline:] > fixed = body > if re.search("Content-Transfer-Encoding: quoted",body_orig): > fixed = quopri.decodestring(body) > if re.search("Content-Transfer-Encoding: base64",body_orig): > fixed = base64.decodestring(body) > # Map unicode > return fixed.replace('\u003d','=') > OK,这下ls不会出错了,大功....,等等,ls出来中文名是乱码啊,哥们,别高兴 > 得太早;-) > 没办法,那就把charset加上吧: > def fixQuotedPrintable(body): > # first remove headers > newline = body.find("\r\n\r\n") > body_orig = body > # check encoding > charset_match = re.search("charset=([^;]+)",body_orig) # 这里解析 > encoding charset > if newline >= 0: > body = body[newline:] > fixed = body > if re.search("Content-Transfer-Encoding: quoted",body_orig): > fixed = quopri.decodestring(body) > if re.search("Content-Transfer-Encoding: base64",body_orig): > fixed = base64.decodestring(body) > if charset_match: > fixed = unicode(fixed,charset_match.group(1)).encode('utf-8') > # Map unicode > return fixed.replace('\u003d','=') > OK,ls出来正确的文件名,再试试把它cp回来看看,糟糕,出错,似乎找不到 > inode为XXXXXXXX的数据邮件,看了一下gmail邮箱,有啊。再仔细看一下他的代 > 码,没有发现什么问题,难道是"灵异"事件?不会这么好彩吧;-) 多年的编程经验 > 告诉我,不会有什么邪门的事,一定是事出有因,多半是我自己的问题。我是相信 > gmailfs代码的质量,不至于最基本的问题都搞不定,google我也相信不会乱来, > 那一定是我的问题了。那我的问题在哪里呢?仔细看看我的邮箱,search一下,1 > 个2个3个4个,等等,别的英文名文件都是3个,这个为什么是4个,而且有一个内 > 容里s=0 (s是sizeTag),难怪,干掉这个邮件,再试,终于OK了。 > > 开始cp...., 另发一封简短的邮件附上修改给gmailfs的作者,顺道感谢感谢他^_^ > > 虽然这是我第一次接触gmailfs,不过读懂代码并不是什么难事,python的代码的 > 可读性又是特别的好。还在害怕读代码的人们,不要站在岸边看风景,跳进源码的 > 海洋里游泳吧! > > 附注:查看发件箱,这是22号晚上的事,今天把它补记下来,也作一点点些微的贡 > 献吧。另多出一个邮件的无头公案,就交给在座的各位看官,再世的包青天包大 > 人.....^-^ > > vcc > _ > 都是我的错,让你多一个,不该乱把Ctrl-C拼命的按;-) > -- '''Time is unimportant, only life important! http://zoomquiet.org blog在http://blog.zoomquiet.org/pyblosxom/ wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet scrap在http://floss.zoomquiet.org douban在http://www.douban.com/people/zoomq/ ____________________________________ Pls. use OpenOffice.org to replace M$ Office. http://zh.openoffice.org Pls. use 7-zip to replace WinRAR/WinZip. http://7-zip.org/zh-cn/ You can get the truely Freedom 4 software. '''
2007年03月24日 星期六 16:28
On 3/24/07, Zoom. Quiet <zoom.quiet在gmail.com> wrote: > so Great Great story! 收集在微项目中了:: > http://wiki.woodpecker.org.cn/moin/MicroProj/2007-03-24 > > 感谢分享一次 Pythonic 的愉快体验!期望大家都将生活/工作 中使用Python 的各种体验公布分享出来哪! > 向 vcc 提个小建议,为了大家可以立即享受你的贡献, 提供 diff 文件吧 =) > On 3/24/07, vcc <vcc在163.com> wrote: > > 最近把工作基本都转到了Ubuntu下面,程序员还是用*nix最方便啊,支持多多。想 > > 用gmailfs把一些东西备份到gmail里去,反正google这么慷慨的提供了这么好的服 > > 务,不用白不用;-) > > > > ubuntu安装软件那个是爽,sudo apt-get instal gmailfs就搞定了,看了一下说 > > 明,配了gmailfs.conf,开始mount,cp....,ls,直接出错,中文文件名不支 > > 持!怎么办?马上去gmailfs作者的主页看看。有一个0.7.3版本发布,有一个 > > bugfix "The failure to handle some text encoding for non-English > > languages"。OK, 下载下来换上一试,还是不行。怎么办?没办法了,只好打开 > > 编辑器,看看代码了。 > > > > 先在出错代码处加上log.debug: > > def getdir(self, path): > > ..... > > for thread in folder: > > assert len(thread) == 1 > > for msg in thread: > > log.debug("thread.summary is " + thread.snippet) > > m = re.search(FileNameTag+'='+FileStartDelim+'(.*)'+ > > FileEndDelim, thread.snippet) > > if (m): > > # Match succeeded, we got the whole filename. > > log.debug("Used summary for filename") > > filename = m.group(1) > > else: > > # Filename was too long, have to fetch message. > > log.debug("Long filename, had to fetch message") > > body = fixQuotedPrintable(msg.source) > > log.debug('body='+body+' '+ FileNameTag+'='+FileStartDelim > > +'(.*)'+FileEndDelim) #这里加上 > > m = re.search(FileNameTag+'='+FileStartDelim > > +'(.*)'+ > > FileEndDelim, body) > > filename = m.group(1) > > ..... > > 然后把gmailfs.conf的[logs]的level设为debug。 > > 再试,哦,原来body是base64编码的,OK,我们来看看fixQuotedPrintable都干了 > > 些什么活: > > ubuntu带的0.7.2版的: > > def fixQuotedPrintable(body): > > fixed = body > > if re.search("Content-Transfer-Encoding: quoted",body): > > fixed = quopri.decodestring(body) > > # Map unicode > > return fixed.replace('\u003d','=') > > 新版0.7.3的: > > def fixQuotedPrintable(body): > > # first remove headers > > newline = body.find("\r\n\r\n") > > if newline >= 0: > > body = body[newline:] > > fixed = body > > if re.search("Content-Transfer-Encoding: quoted",body): > > fixed = quopri.decodestring(body) > > # Map unicode > > return fixed.replace('\u003d','=') > > 注意到没,加了newline。先把base64的decodestring加上, > > def fixQuotedPrintable(body): > > # first remove headers > > newline = body.find("\r\n\r\n") > > if newline >= 0: > > body = body[newline:] > > fixed = body > > if re.search("Content-Transfer-Encoding: quoted",body): > > fixed = quopri.decodestring(body) > > if re.search("Content-Transfer-Encoding: base64",body): > > fixed = base64.decodestring(body) > > # Map unicode > > return fixed.replace('\u003d','=') > > 加上import base64, 试一下,不行,再仔细看一下代码,哦,看出问题出来了 > > 没?原来他已经先把header去掉了,所以 > > re.search("Content-Transfer-Encoding: base64",body)做的是无用功啊。怎么 > > 改?先保留他的代码,不要动他,加上: > > def fixQuotedPrintable(body): > > # first remove headers > > newline = body.find("\r\n\r\n") > > body_orig = body # 加一个变量保存有header的body > > if newline >= 0: > > body = body[newline:] > > fixed = body > > if re.search("Content-Transfer-Encoding: quoted",body_orig): > > fixed = quopri.decodestring(body) > > if re.search("Content-Transfer-Encoding: base64",body_orig): > > fixed = base64.decodestring(body) > > # Map unicode > > return fixed.replace('\u003d','=') > > OK,这下ls不会出错了,大功....,等等,ls出来中文名是乱码啊,哥们,别高兴 > > 得太早;-) > > 没办法,那就把charset加上吧: > > def fixQuotedPrintable(body): > > # first remove headers > > newline = body.find("\r\n\r\n") > > body_orig = body > > # check encoding > > charset_match = re.search("charset=([^;]+)",body_orig) # 这里解析 > > encoding charset > > if newline >= 0: > > body = body[newline:] > > fixed = body > > if re.search("Content-Transfer-Encoding: quoted",body_orig): > > fixed = quopri.decodestring(body) > > if re.search("Content-Transfer-Encoding: base64",body_orig): > > fixed = base64.decodestring(body) > > if charset_match: > > fixed = unicode(fixed,charset_match.group(1)).encode('utf-8') > > # Map unicode > > return fixed.replace('\u003d','=') > > OK,ls出来正确的文件名,再试试把它cp回来看看,糟糕,出错,似乎找不到 > > inode为XXXXXXXX的数据邮件,看了一下gmail邮箱,有啊。再仔细看一下他的代 > > 码,没有发现什么问题,难道是"灵异"事件?不会这么好彩吧;-) 多年的编程经验 > > 告诉我,不会有什么邪门的事,一定是事出有因,多半是我自己的问题。我是相信 > > gmailfs代码的质量,不至于最基本的问题都搞不定,google我也相信不会乱来, > > 那一定是我的问题了。那我的问题在哪里呢?仔细看看我的邮箱,search一下,1 > > 个2个3个4个,等等,别的英文名文件都是3个,这个为什么是4个,而且有一个内 > > 容里s=0 (s是sizeTag),难怪,干掉这个邮件,再试,终于OK了。 > > > > 开始cp...., 另发一封简短的邮件附上修改给gmailfs的作者,顺道感谢感谢他^_^ > > > > 虽然这是我第一次接触gmailfs,不过读懂代码并不是什么难事,python的代码的 > > 可读性又是特别的好。还在害怕读代码的人们,不要站在岸边看风景,跳进源码的 > > 海洋里游泳吧! > > > > 附注:查看发件箱,这是22号晚上的事,今天把它补记下来,也作一点点些微的贡 > > 献吧。另多出一个邮件的无头公案,就交给在座的各位看官,再世的包青天包大 > > 人.....^-^ > > > > vcc > > _ > > 都是我的错,让你多一个,不该乱把Ctrl-C拼命的按;-) > > > > > -- > '''Time is unimportant, only life important! > http://zoomquiet.org > blog在http://blog.zoomquiet.org/pyblosxom/ > wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet > scrap在http://floss.zoomquiet.org > douban在http://www.douban.com/people/zoomq/ > ____________________________________ > Pls. use OpenOffice.org to replace M$ Office. > http://zh.openoffice.org > Pls. use 7-zip to replace WinRAR/WinZip. > http://7-zip.org/zh-cn/ > You can get the truely Freedom 4 software. > ''' > -- '''Time is unimportant, only life important! http://zoomquiet.org blog在http://blog.zoomquiet.org/pyblosxom/ wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet scrap在http://floss.zoomquiet.org douban在http://www.douban.com/people/zoomq/ ____________________________________ Pls. use OpenOffice.org to replace M$ Office. http://zh.openoffice.org Pls. use 7-zip to replace WinRAR/WinZip. http://7-zip.org/zh-cn/ You can get the truely Freedom 4 software. '''
2007年03月24日 星期六 17:53
firefox Óиö²å¼þgmail spaceҲͦºÃÓõġ£ On 3/24/07, Zoom. Quiet <zoom.quiet在gmail.com> wrote: > > On 3/24/07, Zoom. Quiet <zoom.quiet在gmail.com> wrote: > > so Great Great story! ÊÕ¼¯ÔÚ΢ÏîÄ¿ÖÐÁË:: > > http://wiki.woodpecker.org.cn/moin/MicroProj/2007-03-24 > > > > ¸Ðл·ÖÏíÒ»´Î Pythonic µÄÓä¿ìÌåÑ飡ÆÚÍû´ó¼Ò¶¼½«Éú»î/¹¤×÷ ÖÐʹÓÃPython µÄ¸÷ÖÖÌåÑ鹫²¼·ÖÏí³öÀ´ÄÄ! > > > Ïò vcc Ìá¸öС½¨Òé,ΪÁË´ó¼Ò¿ÉÒÔÁ¢¼´ÏíÊÜÄãµÄ¹±Ï×, > Ìṩ diff Îļþ°É =) > > On 3/24/07, vcc <vcc在163.com> wrote: > > > ×î½ü°Ñ¹¤×÷»ù±¾¶¼×ªµ½ÁËUbuntuÏÂÃ棬³ÌÐòÔ±»¹ÊÇÓÃ*nix×î·½±ã°¡£¬Ö§³Ö¶à¶à¡£Ïë > > > ÓÃgmailfs°ÑһЩ¶«Î÷±¸·Ýµ½gmailÀïÈ¥£¬·´ÕýgoogleÕâô¿¶¿®µÄÌṩÁËÕâôºÃµÄ·þ > > > Îñ£¬²»Óðײ»ÓÃ;-) > > > > > > ubuntu°²×°Èí¼þÄǸöÊÇˬ£¬sudo apt-get instal gmailfs¾Í¸ã¶¨ÁË£¬¿´ÁËÒ»ÏÂ˵ > > > Ã÷£¬ÅäÁËgmailfs.conf£¬¿ªÊ¼mount£¬cp....£¬ls£¬Ö±½Ó³ö´í£¬ÖÐÎÄÎļþÃû²»Ö§ > > > ³Ö£¡Ôõô°ì£¿ÂíÉÏÈ¥gmailfs×÷ÕßµÄÖ÷Ò³¿´¿´¡£ÓÐÒ»¸ö0.7.3°æ±¾·¢²¼£¬ÓÐÒ»¸ö > > > bugfix "The failure to handle some text encoding for non-English > > > languages"¡£OK£¬ ÏÂÔØÏÂÀ´»»ÉÏÒ»ÊÔ£¬»¹ÊDz»ÐС£Ôõô°ì£¿Ã»°ì·¨ÁË£¬Ö»ºÃ´ò¿ª > > > ±à¼Æ÷£¬¿´¿´´úÂëÁË¡£ > > > > > > ÏÈÔÚ³ö´í´úÂë´¦¼ÓÉÏlog.debug£º > > > def getdir(self, path): > > > ..... > > > for thread in folder: > > > assert len(thread) == 1 > > > for msg in thread: > > > log.debug("thread.summary is " + thread.snippet) > > > m = re.search(FileNameTag+'='+FileStartDelim+'(.*)'+ > > > FileEndDelim, thread.snippet) > > > if (m): > > > # Match succeeded, we got the whole filename. > > > log.debug("Used summary for filename") > > > filename = m.group(1) > > > else: > > > # Filename was too long, have to fetch message. > > > log.debug("Long filename, had to fetch message") > > > body = fixQuotedPrintable(msg.source) > > > log.debug('body='+body+' '+ > FileNameTag+'='+FileStartDelim > > > +'(.*)'+FileEndDelim) #ÕâÀï¼ÓÉÏ > > > m = re.search(FileNameTag+'='+FileStartDelim > > > +'(.*)'+ > > > FileEndDelim, body) > > > filename = m.group(1) > > > ..... > > > È»ºó°Ñgmailfs.confµÄ£Ûlogs£ÝµÄlevelÉèΪdebug¡£ > > > ÔÙÊÔ£¬Å¶£¬ÔÀ´bodyÊÇbase64±àÂëµÄ£¬OK£¬ÎÒÃÇÀ´¿´¿´fixQuotedPrintable¶¼¸ÉÁË > > > Щʲô»î£º > > > ubuntu´øµÄ0.7.2°æµÄ£º > > > def fixQuotedPrintable(body): > > > fixed = body > > > if re.search("Content-Transfer-Encoding: quoted",body): > > > fixed = quopri.decodestring(body) > > > # Map unicode > > > return fixed.replace('\u003d','=') > > > аæ0.7.3µÄ£º > > > def fixQuotedPrintable(body): > > > # first remove headers > > > newline = body.find("\r\n\r\n") > > > if newline >= 0: > > > body = body[newline:] > > > fixed = body > > > if re.search("Content-Transfer-Encoding: quoted",body): > > > fixed = quopri.decodestring(body) > > > # Map unicode > > > return fixed.replace('\u003d','=') > > > ×¢Ò⵽û£¬¼ÓÁËnewline¡£ÏÈ°Ñbase64µÄdecodestring¼ÓÉÏ£¬ > > > def fixQuotedPrintable(body): > > > # first remove headers > > > newline = body.find("\r\n\r\n") > > > if newline >= 0: > > > body = body[newline:] > > > fixed = body > > > if re.search("Content-Transfer-Encoding: quoted",body): > > > fixed = quopri.decodestring(body) > > > if re.search("Content-Transfer-Encoding: base64",body): > > > fixed = base64.decodestring(body) > > > # Map unicode > > > return fixed.replace('\u003d','=') > > > ¼ÓÉÏimport base64, ÊÔһϣ¬²»ÐУ¬ÔÙ×Ðϸ¿´Ò»Ï´úÂ룬Ŷ£¬¿´³öÎÊÌâ³öÀ´ÁË > > > û£¿ÔÀ´ËûÒѾÏÈ°ÑheaderÈ¥µôÁË£¬ËùÒÔ > > > re.search("Content-Transfer-Encoding: base64",body)×öµÄÊÇÎÞÓù¦°¡¡£Ôõô > > > ¸Ä£¿Ïȱ£ÁôËûµÄ´úÂ룬²»Òª¶¯Ëû£¬¼ÓÉÏ£º > > > def fixQuotedPrintable(body): > > > # first remove headers > > > newline = body.find("\r\n\r\n") > > > body_orig = body ££ ¼ÓÒ»¸ö±äÁ¿±£´æÓÐheaderµÄbody > > > if newline >= 0: > > > body = body[newline:] > > > fixed = body > > > if re.search("Content-Transfer-Encoding: quoted",body_orig): > > > fixed = quopri.decodestring(body) > > > if re.search("Content-Transfer-Encoding: base64",body_orig): > > > fixed = base64.decodestring(body) > > > # Map unicode > > > return fixed.replace('\u003d','=') > > > OK,ÕâÏÂls²»»á³ö´íÁË£¬´ó¹¦....£¬µÈµÈ£¬ls³öÀ´ÖÐÎÄÃûÊÇÂÒÂë°¡£¬¸çÃÇ£¬±ð¸ßÐË > > > µÃÌ«Ôç;-) > > > û°ì·¨£¬ÄǾͰÑcharset¼ÓÉÏ°É£º > > > def fixQuotedPrintable(body): > > > # first remove headers > > > newline = body.find("\r\n\r\n") > > > body_orig = body > > > # check encoding > > > charset_match = re.search("charset=([^;]+)",body_orig) # ÕâÀï½âÎö > > > encoding charset > > > if newline >= 0: > > > body = body[newline:] > > > fixed = body > > > if re.search("Content-Transfer-Encoding: quoted",body_orig): > > > fixed = quopri.decodestring(body) > > > if re.search("Content-Transfer-Encoding: base64",body_orig): > > > fixed = base64.decodestring(body) > > > if charset_match: > > > fixed = unicode(fixed,charset_match.group(1)).encode('utf-8') > > > # Map unicode > > > return fixed.replace('\u003d','=') > > > OK£¬ls³öÀ´ÕýÈ·µÄÎļþÃû£¬ÔÙÊÔÊÔ°ÑËücp»ØÀ´¿´¿´£¬Ôã¸â£¬³ö´í£¬ËƺõÕÒ²»µ½ > > > inodeΪXXXXXXXXµÄÊý¾ÝÓʼþ£¬¿´ÁËÒ»ÏÂgmailÓÊÏ䣬Óа¡¡£ÔÙ×Ðϸ¿´Ò»ÏÂËûµÄ´ú > > > Â룬ûÓз¢ÏÖʲôÎÊÌ⣬ÄѵÀÊÇ"ÁéÒì"ʼþ£¿²»»áÕâôºÃ²Ê°É;-) ¶àÄêµÄ±à³Ì¾Ñé > > > ¸æËßÎÒ£¬²»»áÓÐʲôаÃŵÄÊ£¬Ò»¶¨ÊÇʳöÓÐÒò£¬¶à°ëÊÇÎÒ×Ô¼ºµÄÎÊÌâ¡£ÎÒÊÇÏàÐÅ > > > gmailfs´úÂëµÄÖÊÁ¿£¬²»ÖÁÓÚ×î»ù±¾µÄÎÊÌⶼ¸ã²»¶¨£¬googleÎÒÒ²ÏàÐŲ»»áÂÒÀ´£¬ > > > ÄÇÒ»¶¨ÊÇÎÒµÄÎÊÌâÁË¡£ÄÇÎÒµÄÎÊÌâÔÚÄÄÀïÄØ£¿×Ðϸ¿´¿´ÎÒµÄÓÊÏ䣬searchһϣ¬1 > > > ¸ö2¸ö3¸ö4¸ö£¬µÈµÈ£¬±ðµÄÓ¢ÎÄÃûÎļþ¶¼ÊÇ3¸ö£¬Õâ¸öΪʲôÊÇ4¸ö£¬¶øÇÒÓÐÒ»¸öÄÚ > > > ÈÝÀïs=0 £¨sÊÇsizeTag)£¬Äѹ֣¬¸ÉµôÕâ¸öÓʼþ£¬ÔÙÊÔ£¬ÖÕÓÚOKÁË¡£ > > > > > > ¿ªÊ¼cp...., Áí·¢Ò»·â¼ò¶ÌµÄÓʼþ¸½ÉÏÐ޸ĸøgmailfsµÄ×÷Õߣ¬Ë³µÀ¸Ðл¸ÐлËû^_^ > > > > > > ËäÈ»ÕâÊÇÎÒµÚÒ»´Î½Ó´¥gmailfs£¬²»¹ý¶Á¶®´úÂë²¢²»ÊÇʲôÄÑÊ£¬pythonµÄ´úÂëµÄ > > > ¿É¶ÁÐÔÓÖÊÇÌرðµÄºÃ¡£»¹ÔÚº¦Å¶Á´úÂëµÄÈËÃÇ£¬²»ÒªÕ¾ÔÚ°¶±ß¿´·ç¾°£¬Ìø½øÔ´ÂëµÄ > > > º£ÑóÀïÓÎÓ¾°É£¡ > > > > > > ¸½×¢£º²é¿´·¢¼þÏ䣬ÕâÊÇ22ºÅÍíÉϵÄÊ£¬½ñÌì°ÑËü²¹¼ÇÏÂÀ´£¬Ò²×÷Ò»µãµãЩ΢µÄ¹± > > > Ï×°É¡£Áí¶à³öÒ»¸öÓʼþµÄÎÞÍ·¹«°¸£¬¾Í½»¸øÔÚ×ùµÄ¸÷λ¿´¹Ù£¬ÔÙÊÀµÄ°üÇàÌì°ü´ó > > > ÈË.....^-^ > > > > > > vcc > > > _ > > > ¶¼ÊÇÎÒµÄ´í£¬ÈÃÄã¶àÒ»¸ö£¬²»¸ÃÂÒ°ÑCtrl-CÆ´ÃüµÄ°´;-) > > > > > > > > > -- > > '''Time is unimportant, only life important! > > http://zoomquiet.org > > blog在http://blog.zoomquiet.org/pyblosxom/ > > wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet > > scrap在http://floss.zoomquiet.org > > douban在http://www.douban.com/people/zoomq/ > > ____________________________________ > > Pls. use OpenOffice.org to replace M$ Office. > > http://zh.openoffice.org > > Pls. use 7-zip to replace WinRAR/WinZip. > > http://7-zip.org/zh-cn/ > > You can get the truely Freedom 4 software. > > ''' > > > > > -- > '''Time is unimportant, only life important! > http://zoomquiet.org > blog在http://blog.zoomquiet.org/pyblosxom/ > wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet > scrap在http://floss.zoomquiet.org > douban在http://www.douban.com/people/zoomq/ > ____________________________________ > Pls. use OpenOffice.org to replace M$ Office. > http://zh.openoffice.org > Pls. use 7-zip to replace WinRAR/WinZip. > http://7-zip.org/zh-cn/ > You can get the truely Freedom 4 software. > ''' > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -- http://www.flyaflya.com -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070324/8f569ffb/attachment.htm
2007年03月24日 星期六 21:01
已经更新了。不知道这几天 newforms 有啥进展。 在 07-3-24,风向标<vaneoooo在gmail.com> 写道: > 立马下载,然后测试Limodou兄的备份工具 > > 所有的更新都停滞在这里了,数据库不能变更,悲惨。呵呵。就等0.96 > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to > python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to > python-chinese-request在lists.python.cn > Detail Info: > http://python.cn/mailman/listinfo/python-chinese >
2007年03月26日 星期一 20:19
奇怪,怎么会出来一个s =0的邮件?幽灵邮件?还真是灵异事件啊。 在 07-3-24,flyaflya<flyaflya在gmail.com> 写道: > firefox 有个插件gmail space也挺好用的。 > > > On 3/24/07, Zoom. Quiet <zoom.quiet在gmail.com> wrote: > > On 3/24/07, Zoom. Quiet <zoom.quiet在gmail.com> wrote: > > > so Great Great story! 收集在微项目中了:: > > > http://wiki.woodpecker.org.cn/moin/MicroProj/2007-03-24 > > > > > > 感谢分享一次 Pythonic 的愉快体验!期望大家都将生活/工作 中使用Python 的各种体验公布分享出来哪! > > > > > 向 vcc 提个小建议,为了大家可以立即享受你的贡献, > > 提供 diff 文件吧 =) > > > On 3/24/07, vcc <vcc在163.com> wrote: > > > > 最近把工作基本都转到了Ubuntu下面,程序员还是用*nix最方便啊,支持多多。想 > > > > 用gmailfs把一些东西备份到gmail里去,反正google这么慷慨的提供了这么好的服 > > > > 务,不用白不用;-) > > > > > > > > ubuntu安装软件那个是爽,sudo apt-get instal gmailfs就搞定了,看了一下说 > > > > 明, 配了gmailfs.conf,开始mount,cp....,ls,直接出错,中文文件名不支 > > > > 持!怎么办?马上去gmailfs作者的主页看看。有一个0.7.3版本发布,有一个 > > > > bugfix "The failure to handle some text encoding for non-English > > > > languages"。OK, 下载下来换上一试,还是不行。怎么办?没办法了,只好打开 > > > > 编辑器,看看代码了。 > > > > > > > > 先在出错代码处加上log.debug: > > > > def getdir(self, path): > > > > ..... > > > > for thread in folder: > > > > assert len(thread) == 1 > > > > for msg in thread: > > > > log.debug("thread.summary is " + thread.snippet) > > > > m = > re.search(FileNameTag+'='+FileStartDelim+'(.*)'+ > > > > FileEndDelim, > thread.snippet) > > > > if (m): > > > > # Match succeeded, we got the whole filename. > > > > log.debug("Used summary for filename") > > > > filename = m.group(1) > > > > else: > > > > # Filename was too long, have to fetch message. > > > > log.debug("Long filename, had to fetch message") > > > > body = fixQuotedPrintable(msg.source) > > > > log.debug('body='+body+' '+ > FileNameTag+'='+FileStartDelim > > > > +'(.*)'+FileEndDelim) #这里加上 > > > > m = re.search(FileNameTag+'='+FileStartDelim > > > > +'(.*)'+ > > > > FileEndDelim, > body) > > > > filename = m.group(1) > > > > ..... > > > > 然后把gmailfs.conf的[logs]的level设为debug。 > > > > 再试,哦,原来body是base64编码的,OK,我们来看看fixQuotedPrintable都干了 > > > > 些什么活: > > > > ubuntu带的0.7.2版的: > > > > def fixQuotedPrintable(body): > > > > fixed = body > > > > if re.search("Content-Transfer-Encoding: quoted",body): > > > > fixed = quopri.decodestring (body) > > > > # Map unicode > > > > return fixed.replace('\u003d','=') > > > > 新版0.7.3的: > > > > def fixQuotedPrintable(body): > > > > # first remove headers > > > > newline = body.find("\r\n\r\n") > > > > if newline >= 0: > > > > body = body[newline:] > > > > fixed = body > > > > if re.search("Content-Transfer-Encoding: quoted",body): > > > > fixed = quopri.decodestring(body) > > > > # Map unicode > > > > return fixed.replace('\u003d','=') > > > > 注意到没,加了newline。先把base64的decodestring加上, > > > > def fixQuotedPrintable(body): > > > > # first remove headers > > > > newline = body.find("\r\n\r\n") > > > > if newline >= 0: > > > > body = body[newline:] > > > > fixed = body > > > > if re.search("Content-Transfer-Encoding: quoted",body): > > > > fixed = quopri.decodestring(body) > > > > if re.search("Content-Transfer-Encoding: base64",body): > > > > fixed = base64.decodestring(body) > > > > # Map unicode > > > > return fixed.replace('\u003d','=') > > > > 加上import base64, 试一下,不行,再仔细看一下代码,哦,看出问题出来了 > > > > 没?原来他已经先把header去掉了,所以 > > > > re.search("Content-Transfer-Encoding: base64",body)做的是无用功啊。怎么 > > > > 改?先保留他的代码,不要动他,加上: > > > > def fixQuotedPrintable(body): > > > > # first remove headers > > > > newline = body.find ("\r\n\r\n") > > > > body_orig = body # 加一个变量保存有header的body > > > > if newline >= 0: > > > > body = body[newline:] > > > > fixed = body > > > > if re.search("Content-Transfer-Encoding: quoted",body_orig): > > > > fixed = quopri.decodestring(body) > > > > if re.search("Content-Transfer-Encoding: base64",body_orig): > > > > fixed = base64.decodestring(body) > > > > # Map unicode > > > > return fixed.replace('\u003d','=') > > > > OK,这下ls不会出错了,大功....,等等,ls出来中文名是乱码啊,哥们,别高兴 > > > > 得太早;-) > > > > 没办法,那就把charset加上吧: > > > > def fixQuotedPrintable(body): > > > > # first remove headers > > > > newline = body.find("\r\n\r\n") > > > > body_orig = body > > > > # check encoding > > > > charset_match = re.search("charset=([^;]+)",body_orig) # 这里解析 > > > > encoding charset > > > > if newline >= 0: > > > > body = body[newline:] > > > > fixed = body > > > > if re.search("Content-Transfer-Encoding: quoted",body_orig): > > > > fixed = quopri.decodestring(body) > > > > if re.search("Content-Transfer-Encoding: base64",body_orig): > > > > fixed = base64.decodestring(body) > > > > if charset_match: > > > > fixed = > unicode(fixed,charset_match.group(1)).encode('utf-8') > > > > # Map unicode > > > > return fixed.replace('\u003d','=') > > > > OK,ls出来正确的文件名,再试试把它cp回来看看,糟糕,出错,似乎找不到 > > > > inode为XXXXXXXX的数据邮件,看了一下gmail邮箱,有啊。再仔细看一下他的代 > > > > 码,没有发现什么问题,难道是"灵异"事件?不会这么好彩吧;-) 多年的编程经验 > > > > 告诉我,不会有什么邪门的事,一定是事出有因,多半是我自己的问题。我是相信 > > > > gmailfs代码的质量,不至于最基本的问题都搞不定,google我也相信不会乱来, > > > > 那一定是我的问题了。那我的问题在哪里呢?仔细看看我的邮箱,search一下,1 > > > > 个2个3个4个,等等,别的英文名文件都是3个,这个为什么是4个,而且有一个内 > > > > 容里s=0 (s是sizeTag),难怪,干掉这个邮件,再试,终于OK了。 > > > > > > > > 开始cp...., 另发一封简短的邮件附上修改给gmailfs的作者,顺道感谢感谢他^_^ > > > > > > > > 虽然这是我第一次接触gmailfs,不过读懂代码并不是什么难事,python的代码的 > > > > 可读性又是特别的好。还在害怕读代码的人们,不要站在岸边看风景,跳进源码的 > > > > 海洋里游泳吧! > > > > > > > > 附注:查看发件箱,这是22号晚上的事,今天把它补记下来,也作一点点些微的贡 > > > > 献吧。另多出一个邮件的无头公案,就交给在座的各位看官,再世的包青天包大 > > > > 人.....^-^ > > > > > > > > vcc > > > > _ > > > > 都是我的错,让你多一个,不该乱把Ctrl-C拼命的按;-) > > > > > > > > > > > > > -- > > > '''Time is unimportant, only life important! > > > http://zoomquiet.org > > > blog在http://blog.zoomquiet.org/pyblosxom/ > > > wiki@ http://wiki.woodpecker.org.cn/moin/ZoomQuiet > > > scrap在http://floss.zoomquiet.org > > > douban在http://www.douban.com/people/zoomq/ > > > ____________________________________ > > > Pls. use OpenOffice.org to replace M$ Office. > > > http://zh.openoffice.org > > > Pls. use 7-zip to replace WinRAR/WinZip. > > > http://7-zip.org/zh-cn/ > > > You can get the truely Freedom 4 software. > > > ''' > > > > > > > > > -- > > '''Time is unimportant, only life important! > > http://zoomquiet.org > > blog在http://blog.zoomquiet.org/pyblosxom/ > > wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet > > scrap在http://floss.zoomquiet.org > > douban在http://www.douban.com/people/zoomq/ > > ____________________________________ > > Pls. use OpenOffice.org to replace M$ Office. > > http://zh.openoffice.org > > Pls. use 7-zip to replace WinRAR/WinZip. > > http://7-zip.org/zh-cn/ > > You can get the truely Freedom 4 software. > > ''' > > _______________________________________________ > > python-chinese > > Post: send python-chinese在lists.python.cn > > Subscribe: send subscribe to > python-chinese-request在lists.python.cn > > Unsubscribe: send unsubscribe to > python-chinese-request在lists.python.cn > > Detail Info: > http://python.cn/mailman/listinfo/python-chinese > > > > -- > http://www.flyaflya.com > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to > python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to > python-chinese-request在lists.python.cn > Detail Info: > http://python.cn/mailman/listinfo/python-chinese >
2007年03月28日 星期三 15:36
顺便问一下,我也是刚装了Ubuntu,可是好像没有让我设置root的密码。原始的root密码是为空吗? 另外,我如何才可以直接向Mail组中发邮件?好像每次我直接往邮件组里发邮件都收不到,只能回复别人的邮件。 谢谢
2007年03月28日 星期三 18:57
·¢ÔÚÕâ¸öµØÖ·¾ÍÐÐÁË£ºpython-chinese在lists.python.cn ×°ºÃºórootµÄÃÜÂë¾ÍÊÇÄãµÚÒ»¸öÓû§µÄÃÜÂë ÔÚ07-3-28£¬FireBird <ygonic在gmail.com> дµÀ£º > > ˳±ãÎÊһϣ¬ÎÒÒ²ÊǸÕ×°ÁËUbuntu£¬¿ÉÊǺÃÏñûÓÐÈÃÎÒÉèÖÃrootµÄÃÜÂë¡£ÔʼµÄrootÃÜÂëÊÇΪ¿ÕÂ𣿠> ÁíÍ⣬ÎÒÈçºÎ²Å¿ÉÒÔÖ±½ÓÏòMail×éÖз¢Óʼþ£¿ºÃÏñÿ´ÎÎÒÖ±½ÓÍùÓʼþ×éÀï·¢Óʼþ¶¼ÊÕ²»µ½£¬Ö»Äܻظ´±ðÈ˵ÄÓʼþ¡£ > > лл > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20070328/c8d04689/attachment.htm
Zeuux © 2025
京ICP备05028076号