包含标签 python 的文章

File - 基础文件操作

学习一门语言,我总是喜欢从文件开始。文本文件的读写操作是我比较在意的基本功能。 在这方面,Java 语言功能比较强大,用到的设计模式也非常多。只是使用起来太过繁琐。 而 Python 在这方面表现非常好,简洁不失功能,强大不失性能,通俗不失优雅,值得称赞。 我们从一个最简单的开始。 with open('/etc/resolv.conf') as f: print(f.read()) 这里有用到with语法来关闭文件句柄。 open() 首先来了解下open()内置函数。 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) Open file and return a corresponding file object. If the file cannot be opened, an OSError is raised. open()的参数众多,通常需要关注的是 mode/encoding/errors/newline 等。 最佳实践 (1) 读取文件必须传入字符编码encoding (2) 用完的流需要关闭,推荐使用with操作 (3) 换行符尽可能的使用UNIX格式(\n),尽管python可以智能转换 (4) 如果可以的话尽可能的使用utf-8编码来处理非ascii字符,不要依赖操作系统的编码 小贴士 多个文件同时操作可使用 with 的语法: with open('/etc/hosts','r') as f,open('/tmp/hosts','w') as t: //do something 或者……

阅读全文

IO - 核心流操作模块

I/O 模块定义了 python 操作 I/O 流的基本工具。 常见的有三种类型的流: text I/O:文本流 binary I/O: 二进制流 raw I/O: 直接 I/O 流。前两种流都是带有缓冲区(buffer)的,而 raw 流是不带有缓冲区的低级 I/O 操作。 ……

阅读全文

Python3 标准库笔记

学习/使用 Python 有几年了,只是一直不能将标准库熟记我心,可见有两个问题: 使用 python 不够连续、频繁,导致没有形成条件反射。 python 的 ide 不够强大,需要记住大量的标准库,导致成本太高。这方面 java/c++的 ide 中eclipse、Visual Studio、IntelliJ IDEA非常强大。 因此计划整理一个标准库列表,仅供自己学习和记忆使用。所有标准库都基于 Python 3.3,个人一向支持 Python 3000 的社区发展。 既然一开始设计不太合理,那么现在就应该尽快改良,这是大势所趋。如今 Ubuntu 和 Fedora/Redhat 系列都默认迁移到 python3.x, 这是一个好消息。 计划的标准库列表: 核心模块 文件(File) 字符串(Str) OS 模块 – 未完成 I/O 模块 – 未完成 exceptions re 基础模块 sys datetime time shutil array 高级模块 StringIO signal 多线程模块 threading Queue thread pipes 数据压缩和持久化……

阅读全文

signal

signal 可以用于捕捉操作系统的信号。 #/usr/bin/env python3 import signal import sys import time def signal_handler(signal,frame): print('SIGNAL',signal) sys.exit(0) signal.signal(signal.SIGINT, signal_handler) while True: print(time.time()) time.sleep(2) 这段程序可以捕捉 CTRL+C 以及 kill (os.kill())等信号,然后拦截处理即可。 详细文档参考地址。 Python3 标准库笔记……

阅读全文

str - 字符串

关于编码 Python 3.0 开始,字符串(str)已经完全是 unicode 编码。这与 Python 2.x 完全不一样。 Python 3.x 采用类似 Java 里面的字符串处理模式(我个人认为 Java 在字符编码这方面是做得最好的)。 str 表示 unicode 文本,bytes 表示字节。而且 str 和 unicode 不可以混着使用(在 python 2.x 里面 8-bits 字符是可以和 7-bit 的 bytes 混着使用的)。 str 类似 Java 里面的 String 类,bytes 类似 Java 里面的 byte[]。 Java 里面的 String 和 byte[]的转换是: `byte[]` <== java.lang.String.getBytes(String charset) `byte[]` ==> java.lang.String.String(byte[] bytes, String charset) 而在 Python 3.x 里面 str 和 bytes 的转换是: `bytes` <== str.……

阅读全文