python遍历文件字符编码

使用python写了一个列出某目录下所有文件的文件名、创建时间、修改时间和访问时间的脚本,运行时报错:

SyntaxError: Non-ASCII character ‘\xe5’ in file

原来python默认情况下文件是用ASCII编码的,需要在文件开头加以声明

#coding=utf-8

或者这样也可以

# -*- coding: UTF-8 -*-

运行脚本不再报错。

顺便把遍历文件的代码也贴下,方便以后自己查阅:

extjs获取url参数

使用extjs开发时,需要获取页面地址url中的参数。

大概找了一下,没有找到,不知道extjs有没有相关的方法,可能是自己知道的太少吧。

也不去管那么多了,先搞个功能用起来再说。

使用javascript直接就可以获取url的参数,只是这里进行一下解码,没什么好解释的,一切都在代码中。

var id = getUrlParam(‘id’);

function getUrlParam(param) {
var params = Ext.urlDecode(location.search.substring(1));
return param ? params[param] : params;
}

python读写文件

在python中读写文件很简单。

例如使用open(‘cache.txt’)打开一个缓存文件,此时文件是只读模式打开的,等同于使用open(‘cache.txt’, ‘r’)。

如果需要打开的文件不存在,就会遇到异常。因此,在程序中需要进行一些简单的处理。

可以定义一个方法来安全的打开文件:

对应的写文件操作,也可以这样处理:

python使用webpy文件路径错误

按照webpy官方给的样例代码进行修改时发现在code.py中引入自定义模块时出现错误:

ImportError: No module named someName

错误消息是在apache的log中查看的,页面显示500错误

此时需要将当前应用的路径加入系统路径:

import os
import sys
sys.path.append(os.path.abspath(os.path.dirname(__file__)))

页面显示正常,可以引入自定义模块了。

过了一段时间,项目中增加了logging功能,并且是通过配置文件对logging进行初始化的。在python中直接运行脚本没有问题,但是整合到页面中时,又报500了,查看apache错误日志:

NoSectionError: No section: ‘formatters’

而配置文件中明明有formatters,而且模块本身可以正常运行。

经过一翻排查,原来还是路径的原因

将原来的读取配置文件的代码

logging.config.fileConfig(“logger.conf”)

改为下面的即可,注意/

import os
logging.config.fileConfig(os.path.abspath(os.path.dirname(__file__)) + “/logger.conf”)

solr开闭区间查询

在solr中经常会用到日期区间查询,例如:

timestamp:[* TO NOW]
timestamp:[NOW/DAY-3DAYS TO NOW]
timestamp:[2011-01-01T00:00:00.000Z TO 2011-01-31T23:59:59.999Z]

一般情况下使用[]设置范围,而[]表示的是闭区间,也就是包含端点值。

如果不希望包含端点值,就需要用到开区间,用大括号来限定{}。

但是对于半开区间,就无法设置了,在数学中常见的例子:

(0,1]或者[0,1)

如果都使用闭区间,端点值会重复计算,而都使用开区间,端点值又会被忽略。

在facet.date中有端点值如何处理的设置。但是对于直接用区间进行查询就无法设置了,只能在程序中人为保证区间分段的正确性了。

python启用日志功能

在python中一般情况下可以使用print进行简单调试,随着项目的不断演进,日志的需求就越发重要了。

下面先给出一个最简单的日志输出形式:

import logging
logging.warning(‘Oh, my log.’)

因为默认情况下python定义日志输出级别是warning以上的,所以如果这里用debug的话会看不到日志输出。

当然我们可以使用basicConfig进行设置,修改日志的输出级别

logging.basicConfig(level=logging.DEBUG)

个人更喜欢使用配置文件来设置

使用上面的配置文件后,发现python执行脚本没有问题,但是在使用webpy配置apache的情况下报错:

NoSectionError: No section: ‘formatters’

需要这样来加载配置文件

相应的配置文件logger.conf如下

官方文档http://docs.python.org/library/logging.html
一些简单的例子
还有关于配置文件的说明