笔记的方法-读书简记 刷新:重新发现商业与未来-读书简记 蛤蟆先生去看心理医生-读书简记 十分钟冥想-读书简记 乔布斯、禅与投资-读书简记 掌控习惯-读书简记 金钱心理学-读书简记 被讨厌的勇气-读书简记 身心合一的奇迹力量-读书简记 零极限-读书简记 投资最重要的事-读书简记 语言学的邀请-读书简记 更富有、更睿智、更快乐-读书简记 管理的常识-读书简记 卡片笔记写作法-读书简记 纳瓦尔宝典-读书简记 卓有成效的管理者-读书简记 贪婪的多巴胺-读书简记 清醒的活-读书简记 像哲学家一样生活:斯多葛哲学的生活艺术-读书简记 你是你吃出来的-读书简记 你可以跑的更快-读书简记 丹尼尔斯经典跑步训练法-读书简记 非暴力沟通-读书简记 异类-读书简记 稀缺-读书简记 为什么要睡觉-读书简记 事实-读书简记 世界上最快乐的人-读书简记 病毒学概览-读书简记 免疫学概览-读书简记 内观-读书简记 沟通的艺术-读书简记 你的生命有什么可能-读书简记 演化的故事-读书简记 经济学原理:宏观经济学分册-读书简记 经济学原理:微观经济学分册-读书简记 社会心理学-读书简记 追寻记忆的痕迹-读书简记 情绪-读书简记 远见:如何规划职业生涯3阶段-读书简记 存在主义心理治疗-读书简记 P·E·T父母效能训练-读书简记 彼得·林奇的成功投资-读书简记 2015-2020美国居民膳食指南-读书简记 中国居民膳食指南(2016)-读书简记 批判性思维-读书简记 代码大全-读书简记 游戏力-读书简记 成功,动机与目标-读书简记 基因组:人种自传23章-读书简记 YOU身体使用手册-读书简记 登天之梯-读书简记 为什么学生不喜欢上学-读书简记 请停止无效努力-读书简记 麦肯基疗法-读书简记 跟简七学理财-课程简记 指数基金投资指南(2017中信版)-读书简记 指数基金投资指南(2015雪球版)-读书简记 让大脑自由:释放天赋的12条定律-读书简记 养育的选择-读书简记 GPU高性能编程CUDA实战-读书简记 百万富翁快车道-读书简记 原则-读书简记 穷查理宝典-读书简记 C++并发编程实战-读书简记 哲学家们都干了些什么-读书简记 Effective C++-读书简记 通往财富自由之路-读书简记 Linux命令行与Shell脚本编程大全-读书简记 刻意练习-读书简记 写给大家看的设计书-读书简记 习惯的力量-读书简记 好好学习-读书简记 硅谷最受欢迎的情商课-读书简记 富爸爸,穷爸爸-读书简记 如何说孩子才会听,怎么听孩子才会说-读书简记 阻力最小之路-读书简记 ProGit-读书简记 思考:快与慢-读书简记 C语言深度剖析-读书简记 编程珠玑-读书简记 Head First 设计模式-读书简记 反脆弱-读书简记 我的阅读书单 小强升职记-读书简记 观呼吸-读书简记 黑客与画家-读书简记 晨间日记的奇迹-读书简记 如何高效学习-读书简记 即兴的智慧-读书简记 精力管理-读书简记 C++编程思想-读书简记 拖延心理学-读书简记 自控力-读书简记 伟大是熬出来的-读书简记 生命不能承受之轻-读书简记 高效能人士的七个习惯-读书简记 没有任何借口-读书简记 一分钟的你自己-读书简记 人生不设限-读书简记 暗时间-读书简记
笔记的方法-读书简记 刷新:重新发现商业与未来-读书简记 蛤蟆先生去看心理医生-读书简记 十分钟冥想-读书简记 乔布斯、禅与投资-读书简记 掌控习惯-读书简记 金钱心理学-读书简记 被讨厌的勇气-读书简记 身心合一的奇迹力量-读书简记 零极限-读书简记 投资最重要的事-读书简记 语言学的邀请-读书简记 更富有、更睿智、更快乐-读书简记 管理的常识-读书简记 卡片笔记写作法-读书简记 纳瓦尔宝典-读书简记 卓有成效的管理者-读书简记 贪婪的多巴胺-读书简记 清醒的活-读书简记 像哲学家一样生活:斯多葛哲学的生活艺术-读书简记 你是你吃出来的-读书简记 你可以跑的更快-读书简记 丹尼尔斯经典跑步训练法-读书简记 非暴力沟通-读书简记 异类-读书简记 稀缺-读书简记 为什么要睡觉-读书简记 事实-读书简记 世界上最快乐的人-读书简记 病毒学概览-读书简记 免疫学概览-读书简记 内观-读书简记 沟通的艺术-读书简记 你的生命有什么可能-读书简记 演化的故事-读书简记 经济学原理:宏观经济学分册-读书简记 经济学原理:微观经济学分册-读书简记 社会心理学-读书简记 追寻记忆的痕迹-读书简记 情绪-读书简记 远见:如何规划职业生涯3阶段-读书简记 存在主义心理治疗-读书简记 P·E·T父母效能训练-读书简记 彼得·林奇的成功投资-读书简记 2015-2020美国居民膳食指南-读书简记 中国居民膳食指南(2016)-读书简记 批判性思维-读书简记 代码大全-读书简记 游戏力-读书简记 成功,动机与目标-读书简记 基因组:人种自传23章-读书简记 YOU身体使用手册-读书简记 登天之梯-读书简记 为什么学生不喜欢上学-读书简记 请停止无效努力-读书简记 麦肯基疗法-读书简记 跟简七学理财-课程简记 指数基金投资指南(2017中信版)-读书简记 指数基金投资指南(2015雪球版)-读书简记 让大脑自由:释放天赋的12条定律-读书简记 养育的选择-读书简记 GPU高性能编程CUDA实战-读书简记 百万富翁快车道-读书简记 原则-读书简记 穷查理宝典-读书简记 C++并发编程实战-读书简记 哲学家们都干了些什么-读书简记 Effective C++-读书简记 通往财富自由之路-读书简记 Linux命令行与Shell脚本编程大全-读书简记 刻意练习-读书简记 写给大家看的设计书-读书简记 习惯的力量-读书简记 好好学习-读书简记 硅谷最受欢迎的情商课-读书简记 富爸爸,穷爸爸-读书简记 如何说孩子才会听,怎么听孩子才会说-读书简记 阻力最小之路-读书简记 ProGit-读书简记 思考:快与慢-读书简记 C语言深度剖析-读书简记 编程珠玑-读书简记 Head First 设计模式-读书简记 反脆弱-读书简记 小强升职记-读书简记 观呼吸-读书简记 黑客与画家-读书简记 晨间日记的奇迹-读书简记 如何高效学习-读书简记 即兴的智慧-读书简记 精力管理-读书简记 C++编程思想-读书简记 拖延心理学-读书简记 自控力-读书简记 伟大是熬出来的-读书简记 生命不能承受之轻-读书简记 高效能人士的七个习惯-读书简记 没有任何借口-读书简记 一分钟的你自己-读书简记 人生不设限-读书简记 暗时间-读书简记

Python使用过程中常见问题汇总

2014年11月14日

数据库SQLite3使用时中文编码问题


一、具体问题

读取十万多条文本写入SQLite类型数据库,由于文本中存在中文字符,插入到数据库没错,取出时一直是UnicodeDecodeError,导致折腾了很长时间。

二、解决方法

Python连接数据时进行如下设置:

db=sqlite3.connection("...")
db.text_factory=str

另为了python代码中硬编码的中文字符串不出现问题,除了在源码开始添加

# -*- coding:utf-8 -*-  

设置python源码的编码为utf-8

import sys
reload(sys)
sys.setdefaultencode('utf8')

安装机器学习库Sklearn出错


一、具体问题

使用pip或easy_install时一直出错,如can not import murmurhash3_32。

二、解决方法

下载后进行本地安装。

1 首先需要安装Cython,网上下载后进行本地安装 python setup.py install;

2 下载Sklearn包,进行本地安装;

3 安装后用nosetests -v sklearn来测试安装。

改变Python输出流的编码方式


一、改变文件输出流编码方式

最近玩BeautifulSoup,遇到了这样的问题: BeautifulSoup默认把 转换成'\xa0'了,结果gbk就没法输出了,因为这个玩意转换不到gbk,但我系统的文件输出编码方式默认就是gbk,所以需要改变文件的编码方式。

1 对于python 2.4以前的版本可以f=open('out.html','w','utf-8')这样实现。

2 对于以后的版本,可以使用codecs类

f=code.open('out.html','w','utf-8')

然后就可以print >>f,data或者f.write(data)来编码文件流了。

二、改变标准输出流的编码方式的方法

import codecs, sys
old=sys.stdout
sys.stdout = codecs.lookup('iso8859-1')[-1]( sys.stdout)

Python和C,C++进行混编


一、Python利用Boost库来调用C,C++

不使用boost.python库来直接构建dll的话比较繁琐,下面实例是借助boost库实现python对C、C++的调用。

1 首先确定已经安装python和boost库,本例测试环境是python2.7,boost_1_54_0 ,在vs平台下实现;

2 vs建立dll工程,配置上boost库的环境,记得包括python的依赖库:E:\Python27\include和E:\Python27\libs;

3 编写代码

下面是一个小例:

#include <string>  
#include <boost/python.hpp>  
using namespace boost::python;  

std::string strtmp;  
char const* Recognise(const char* url)  
{  
    strtmp="get data from dll...";  
    strtmp+=url;  
    return strtmp.c_str();  
}  

BOOST_PYTHON_MODULE(Pyutil)  
{  
    def("Recognise",Recognise);  
}

4 运行,将生成的dll和lib文件拷到python的工作目录,将dll的后缀该为pyd(注意不是pyc),然后就可以使用了。

import Pyutil  
result = Pyutil.Recognise("192.168.1.1")  
print "the result is: \n"+ result

5 需要注意的问题和可能遇到的问题

(1)dynamic module does not define init function,请检查模块的名字和dll的名字一致性;

(2)注意vs需要release下进行;

(3)使用boost静态python库的话需要在属性->Preprocessor->Preprocessor Definitions中定义BOOST_PYTHON_STATIC_LIB,否则编译的为动态,会提示找不到python_boost*.lib什么的。

二、Python利用Cython调用C,C++

利用Cython也可进行对C,C++函数的调用,相对与利用Boost库的方法要繁琐一些。

1 下载Cython,用python setup.py install进行安装。

2 一个实例

① 创建helloworld目录

创建helloworld.pyx,内容如下:

cdef extern from"stdio.h":
    extern int printf(const char *format, ...) 
def SayHello():
    printf("hello,world\n")

② 编译,利用python的Distutils

helloworld目录下创建Setup.py,内容如下:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize

setup(
  name = 'helloworld',
  ext_modules=cythonize([
    Extension("helloworld", ["helloworld.pyx"]),
    ]),
)

编译:

python Setup.py build

编译完成后会在build/lib.???目录下生成的helloworld.pyd。

安装(将生成的helloworld.pyd拷贝到Python目录的Lib/site-packages),如果只想测试,则可以不进行安装,直接将生成的helloworld.pyd拷贝到工作目录即可。

python Setup.py install #安装

③ 测试:

>>import helloworld 
>>helloworld.SayHello() 
>>hello,world

参考文献


[1] Python操作SQLite3官方英文文档

[2] Python操作SQLite3中文文档

[3] Cython基础-Cython入门


版权声明:本文为博主原创文章,转载请注明出处 本文总阅读量    次