CollabNet Subversion Edge的奇怪错误

今天项目组的svn服务器被碰掉电源 然后svn服务就启动不起来了 很是诡异 查看日志 发现是很多地方找不带python2.7的文件 我一看 这个svn软件包和python有关的文件都只到2.6 怪不得 原来是我前两天装了python2.7 这次启动的时候发现python默认是2.7就要找2.7的库了 说点题外话 当时安了这个CollabNet的svn后很长一段时间 都觉得挺失败的 完全不如自己架原始版本了 当然现在在升级过前些天的最新版本后 终于修复了一些不方便的地方 算是比较好用了 这是后话 之前确实bug挺多还把svn改的完全没有自由 我于是先把2.6的相关文件全复制了一份2.7的 不行 还是报错 而它的自动升级功能又下载到15%卡住不动 于是只好下载了一个最新的这个版本的svn重装 嗯 这次装好后天生支持2.7了 发现还是报错 错误定位在没有libpython2.7.so.1.0 查了下 原来是我安装python时候默认安装的 并没有生成这个共享库 这样处理 找到python2.7的解压后的安装文件 ./configure –enable-shared make make install 好了 这次看到libpython2.7.so.1.0这个文件了 把它软链接到/usr/lib 修改好权限 并保证LD_LIBRARY_PATH里包含/usr/lib 现在再重新启动服务 发现又一切正常了

2011年3月16日 · 1 分钟 · Hyacinthus

正则表达式里的中文

经常会用正则表达式验证输入的字符串是否匹配[0-9a-z]这样 可是如果可以是中文呢? UTF-8的情况下 [u4e00-u9fa5]就可以了 这是中文的编码范围 于是可以用[0-9a-zu4e00-u9fa5]判断有没有正常输入 貌似写的内容太少 不过我今天想 我经常遇到问题 如果不写下来 也许永远都不会写了 总结一篇长的通常要很久 平时很忙并没有那么多时间 那么我就每次写少点 遇到问题就写出来分享吧

2011年3月16日 · 1 分钟 · Hyacinthus

程序起名要慎重

今天为了玩python的random模块 我兴高采烈的建了个文件叫random.py 打下 import random 什么?为什么eclipse里提示错误呢…… 我想了许久 终于明白是优先发现本目录有random的文件 就是它自己 当然不能导入了 于是连忙改了个名字 错误消失了 可没有结束 写了个函数 运行 报错了 TypeError: ‘module’ object is not callable 奇怪 难道是改名要反应时间? 我关掉eclipse 重新打开 运行 还是报错! 在网上搜搜这错误 一看 人家都是真错了 我这真没错啊 于是想起来去服务器上试试 命令行里一试验 没问题呀 写个文件试试 也没问题呀 这奇怪了…… 我想先写了程序传服务器上用吧 这期间我又本地运行了几次 一直报错 再重启 还是报错 …… 两个小时后 我抱着不到黄河心不死的精神又运行了次 没问题了 可以执行了 eclipse 作为一个电脑程序 你反射弧也太长了吧!

2011年3月10日 · 1 分钟 · Hyacinthus

python.org太可爱了

大家都记得初学时下载python的困难吗 python官网可以上 但是很诡异的下载页面被墙了 今天发现 python.org竟然在左侧的导航里加了个中文的下载按钮 大家可以去看看这奇怪的效果 还有个疑问是只有中国的ip上去可以看到这个按钮 还是全世界都是这样子 有空可以挂代理去看看 哈哈

2011年1月28日 · 1 分钟 · Hyacinthus

Python的布尔值与逻辑判断

记得在写C程序的时候 什么都敢往if后面接 后来用C++ 有人说写代码要规范 于是布尔值直接用或者取反 整形要等于0 字符串要等于空串 浮点型最麻烦 不能用等于号了 而现在 在python中 又返璞归真了 我又什么都敢往if后面放了 初学python 不知道有没有这方面的代码规范 总之在规范之前先搞清楚语法再说吧 在python中 None/False/空字符串""/0/空列表[]/空字典{}/空元组()都相当于False 其它的都相当于True python中的逻辑运算有这些 优先级从高到低排列 <,<=,>,>=,!=,== 这些比较运算比所有的逻辑运算优先级都高 is,is not 然后这两个是判断 这个和==的区别我有空再写一篇说 in,not in 接着是这两个判断是否属于的 not 非在逻辑运算里优先级最高 and 其次是与 or 最后是或 这和很多语言都一样 关于逻辑运算的默认运算顺序 是从左到右的 比如 a and b and c 返回值是最靠左的假值 如果都是False 那么返回c

2011年1月21日 · 1 分钟 · Hyacinthus

Python循环中的进度输出

今天在进行一个较为耗时的运算时 不知道程序运行了多少 等的比较焦虑 想到这种时候应该给程序加个进度显示 上万行的数据肯定不能每行都输出 那么每10%显示个进度吧 # -*- coding: UTF-8 -*- #源列表 这里随便定义一个 list=range(3456) #要打印的节点 10为每10%打印一次 node=range(0,len(list),len(list)/10) #开始循环 for index,item in enumerate(list): #打印百分比     if node.count(index)!=0:         persent=index*100/len(list)         print '%d%%' % persent #这里添加其他处理 print 'finish!' 第一行的list是代表要循环列表 主要思想是 首先用enumerate取到每行的索引号 然后制造一个抽样的列表 这里平均抽10个 然后到了列表中的进度时就打印一个百分比出来 总共多用了四行代码 循环体内多了个count和比较 我才学用python几天 感觉这代码很笨拙肯定有可以改进的地方 首先这个count就感觉很浪费 可是对于列表我找不到find或者exist方法 index方法搜索不到时会出错 也不好用 另外打印出来的比例也不是整数 不过是给自己看的 无所谓了 希望谁有什么更简单或者华丽的办法 可以指点我一下

2010年12月7日 · 1 分钟 · Hyacinthus

python中处理中文文件名

最近在学习python 真是强大的语言 工作时经常需要批处理一些东西 我以前用c写程序处理 代码写起来很繁琐 用linux的shell处理 又经常要传文件并且功能不够强大 现在用了python 写小程序方便太多了 c用100行的python用30行就搞定了 我碰到的第一问题就是要处理中文的文件路径 当然报错了 SyntaxError: Non-ASCII character ‘xe5’ in file 这个错误是python默认代码文件用ASCII码 你存成UTF-8也没用 需要在程序第一行加 # -*- coding: UTF-8 -*- 这一行有很多写法 不要迷惑 系统只检测 # coding 编码 这三个要素 所以你会查到很多写法 而utf8和UTF-8应该也一样的 不过前者不小写或者后者不大写eclipse就会报错 而实际程序是不报错的 不过为了eclipse好看 我按照规范写的UTF-8 好了 现在文件中可以支持中文了 但是运行 还是报错 IOError: [Errno 2] No such file or directory 这肯定还是编码问题了 我又找了很多编码的资料 用了很多方法 有encode decode unicode 经过一番折腾 也用open成功打开了文件 但是 后来我查到 最规范的打开文件不用那么麻烦 应该是这样的 import os.path file_name=os.path.normcase(u"C:/项目/文件.txt") file=open(file_name,'r') 前两行是专门操作路径名的函数 会自适应各个操作系统 这里要用unicode串 然后函数会自动处理成可以使用的字符串 ...

2010年11月25日 · 1 分钟 · Hyacinthus