[python]如何生成一个 Unicode 编码的文件

平时我们用记事本保存文件时,可以看到文件编码可以选择 Unicode 编码。 那么如何用 python 生成一个 Unicode 编码的文件呢?

只需知道 python 中哪个编码代表 Unicode 编码,我们就可以生成一个 Unicode 编码的文件:

Codec Aliases Languages Note
utf_16 U16, utf16 all languages Unicode(UTF-16 LE BOM)
utf_16_be UTF-16BE all languages (BMP only) Unicode(UTF-16 BE)
utf_16_le UTF-16LE all languages (BMP only) Unicode(UTF-16 LE)

上面表格中,LE ...

more ...

[git]如何删除在远程已被删除的本地分支(清理本地分支)

Date Category git Tags git

通过 git fetch -p 命令可以实现清理本地分支的功能:

$ git fetch -p
 x [deleted]         (none)     -> origin/feature-xxx
 x [deleted]         (none)     -> origin/feature-xxxx
 x [deleted]         (none)     -> origin/feature-xxxxx
 x [deleted]         (none)     -> origin/hotfix-xx

# 然后再执行
$ git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs ...
more ...

[python]如何创建一个不可变的类

所谓的不可变的类就是类的实例不可修改。

下面我们先看一下普通的类:

In [1]: class A(object):
   ...:     pass
   ...:

In [2]: a = A()

In [3]: a.abc = 1

In [4]: a.abc
Out[4]: 1

普通的类的实例可以在运行时添加新的属性。

那么如何定义一个不可变的类呢? 下面就来看一个不可变类的例子:

In [8]: class B(object):
  ....:     __slots__ = ['abc']
  ....:     def __init__(self, abc):
  ....:         super(B, self).__setattr__('abc', abc)
  ....:     def __setattr__(self, name, value):
  ....:         raise ...
more ...

[python]解决将 python 程序输出结果重定向到文件时,出现 UnicodeDecodeError 错误

比如:有一个 python 程序 hello.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

print u'你好'

将输出结果重定向到文件,就会出现 UnicodeEncodeError:

$ python hello.py > hello.txt
Traceback (most recent call last):
  File "hello.py", line 4, in <module>
    print u'你好'
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not ...
more ...

[python]使用 multiprocessing.dummy 执行多线程任务

本文将简单讲述一种使用 multiprocessing.dummy 模块执行多线程任务的方法。

multiprocessing.dummy 模块与 multiprocessing 模块的区别: dummy 模块是多线程,而 multiprocessing 是多进程, api 都是通用的。 所有可以很方便将代码在多线程和多进程之间切换。

下面是一个示例:

# from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool
import time
import urllib2

urls = [
    'http://www.baidu.com',
    'http://home.baidu.com/',
    'http://tieba.baidu.com/',
    'http://zhidao.baidu.com ...
more ...