文件读写
在Python中,文件读写是通过open()函数打开的文件对象完成的。使用with语句操作文件IO是个好习惯。
>>>
try:
f = open('1.txt', 'r') #rb写二进制
#f = open('1.txt', 'w') #wb读二进制
f.read().decode('utf8')
#f.write('test').encode('utf8')
finally:
if f:
f.close()
用with写:
with open('1.txt', 'r') as f:
print f.read()
>>>
如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便
模式 | 描述 | ||
r | 以读方式打开文件,可读取文件信息。 | ||
w | 以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容 | ||
a | 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建 | ||
r+ | 以读写方式打开文件,可对文件进行读和写操作。 | ||
w+ | 消除文件内容,然后以读写方式打开文件。 | ||
a+ | 以读写方式打开文件,并把文件指针移到文件尾。 | ||
|
read(size) # 读取所有内容至字符串,若设定了size,就最多读取size个字节的内容 write() # 将字符串写入到文件 ps:当使用输入方法如 read() 、readline() 、readlines() 从文件中读取行时, Python 并不会删除行结束符. 这个操作被留给了程序员. 文件迭代 for eachline in f: # 一行行访问文件
操作系统差异 os模块中考虑了上面这些: >>> print 'aa' + os.linesep + 'bb' python 异常处理 #!/usr/bin/python import traceback #!/usr/bin/python Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。所有异常都从基类Exception继承,而且都在exceptions模块中定义。Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块即可使用异常。一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。如果交互式会话遇到一个未被捕捉的SystemExit异常,会话就会终止。 :try语句: 1使用try和except语句来捕获异常 try: try: 该种异常处理语法的规则是: · 执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。 · 如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。 · 如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。 · 如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。 · 如果没有发生异常,则执行else块代码。 例: try: f = open(“file.txt”,”r”) 捕获到的IOError错误的详细原因会被放置在对象e中,然后运行该异常的except代码块 捕获所有的异常 try: 使用except子句需要注意的事情,就是多个except子句截获异常时,如果各个异常类之间具有继承关系,则子类应该写在前面,否则父类将会直接截获子类异常。放在后面的子类异常也就不会执行到了。 2 使用try跟finally: 语法如下: try: 该语句的执行规则是: · 执行try下的代码。 · 如果发生异常,在该异常传递到下一级try时,执行finally中的代码。 · 如果没有发生异常,则执行finally中的代码。 第二种try语法在无论有没有发生异常都要执行代码的情况下是很有用的。例如我们在python中打开一个文件进行读写操作,我在操作过程中不管是否出现异常,最终都是要把该文件关闭的。 这两种形式相互冲突,使用了一种就不允许使用另一种,而功能又各异
|