首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

手工执行python3程序没有关问题,放在cron里面就不执行有中文的代码,高手帮忙啊

2012-02-05 
手工执行python3程序没问题,放在cron里面就不执行有中文的代码,高手帮忙啊。急!先介绍下基本情况环境: redh

手工执行python3程序没问题,放在cron里面就不执行有中文的代码,高手帮忙啊。急!
先介绍下基本情况

环境: redhat Python3.2
目的:定时执行python程序
问题:手工执行python程序没有问题,放到crontab列表里面执行的时候,遇到中文就抛异常

python程序源码

Python code
#!/usr/local/bin/python3#coding=gbkimport io, sys, time, re, osdef main():    try:        print("a")        print("中")        print("b")    except Exception as e:        print("Exception: " + str(e))if __name__ == '__main__':    main()


手工执行结果:
Perl code
[kkk@vs ~]$ python3 /home/kkk/9/app/tw/tw3.pya中b


放到cron里面
Perl code
[kkk@vs ~]$ crontab -l*/1 * * * *     /usr/local/bin/python3 /home/kkk/9/app/tw/tw3.py             > cronlog5

查看日志,只有a被打印了
Perl code
[kkk@vs ~]$ more cronlog5aException: 'ascii' codec can't encode character '\u4e2d' in position 0: ordinal not in range(128)


已经尝试过网上使用的添加sitecustomize.py文件方法,不起作用

也试过
Python code
import sys reload(sys)sys.setdefaultencoding('utf8')

结果sys.setdefaultencoding('utf8')后面的代码就不执行了,日志里面只有这条语句前面的打印记录

查看python3默认编码,发现已经是utf-8,也许是上面两种方法不再有效的原因
另外系统里面还有python2,不过我想跟这个也许没什么关系,之前被我执行过sys.setdefaultencoding('utf8') ,现在默认编码也是utf-8了

Perl code
[kkk@vs ~]$ pythonPython 2.4.3 (#1, Sep 21 2011, 20:06:00) [GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import sys>>> sys.getdefaultencoding() 'utf-8'>>> 


被这个问题折腾一天了,请大虾们帮我看看。


[解决办法]
你在shell里看不管用,因为你手动执行没错。你在cron的task里把encoding打出来看下。可能是执行这个task的环境(或者用户)的默认编码不是utf-8的。

热点排行