Published on

python_cookbook

with open(file,'rt',encoding='utf-8',newline='',errors='replace') as f:
	...

rt模式下,python在读取文本时会自动把\r\n转换成\n.

如果不希望python读取文件时处理其他换行符为\n,添加 newline=''参数。

如果读取文件中有编码错误,可以使用errors=replace(在错误的地方插入"?")或ignore处理,但是这些不可逆,python还提供 surrogateescape的可逆方式,具体看链接。stackoverflow_ingore reading a file error

python -u

python 重定向后,会默认启用输出缓冲区,直到程序结束或者缓冲区满才会打印内容。

python -u 关闭缓冲区 立刻输出。

nohup python -u 1.py 1>2.log 2>&1 &

pip 源

# 清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 或:
# 阿里源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 腾讯源
pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple
# 豆瓣源
pip config set global.index-url http://pypi.douban.com/simple/

多进程写文件

from multiprocessing import Pool


def setcallback(line):
    with open('result.txt', 'a+') as f:
        f.write(line + '\n')


def run(num):
    return str(num * 2)


pool = Pool(processes=6)
for i in range(10):
    pool.apply_async(func=run, args=(i,), callback=setcallback)
pool.close()
pool.join()

文件结果:

0 4 2 6 8 12 10 14 16 18