列表解析和字典解析
metadata = [(f, os.stat(f)) for f in glob.glob('*test*.py')]
metadata_dict = {f:os.stat(f) for f in glob.glob('*test*.py')}
交换字典键和值:
a_dict = {value:key for key, value in a_dict.items()}#颠倒key和value,创建新的值
复合字段
print('my username is {0}, password is {1}{2}'.format(username, password, '!'))
格式说明符,占位用
正则表达式跳过
获得默认编码的信息,则导入 locale 模块,
然后调用locale.getpreferredencoding()。
读取文件信息
指定encoding参数
seek()和tell()方法总是以字节的方式计数,
但是,由于你是以文本文件的方式打开的, read()方法以字符的个数计数。
中文字符的UTF‐8 编码需要多个字节。而文件里的英文字符每一个只需要一个字节来存储,所以你可能会产生这样的误解:seek()和read()方法对相同的目标计数。而实际上,只有对部分字符的情况是这样的。
io.StringIO 让你能够将一个字符串作为文本文件来看待。
io.ByteIO 类,它允许你将字节数组当做二进制文件来处理。
sys.stdout 和 sys.stderr 都是流对象,但是他们都只支持写入。
试图调用他们的 read()方法会引发 IOError 异常。