Python 文件操作、异常

windows默认是gbk编码,又称cp936,汉字占2个字节。

utf-8被称为万国码,这个编码下,汉字占3个字节。

ASCII也是一种编码。

一、文件操作

最基本的文件打开:

f = open("a.txt","w")
# f 文件流、输入输出流
# "r"模式,没有该文件会报错
# "w"模式,会清空之前的内容,无文件会新建

(一).文件的打开模式:

r 只读模式,文件不存在时会报错。

w 写入模式,文件存在会清空之前的内容,文件不存在则会新建文件。

x 写入模式,文件存在会报错,文件不存在则会新建文件。

a 追加写入模式,不会清空之前的内容,直接将写入的内容添加到后面。

b 以二进制模式读写文件,wb rb ab。

+ 可读写模式,r+ w+ x+ a+,这几种模式还遵循了r w x a的基本原则。

(二).文件的读取:

f.read() 全部读出来。读完后,光标在文件最后了,再运行一次因为后面没有数据了(空值了)就会返回空值。

f.readline() 只读一行,读完后光标停在读到的那一行最后。

f.readlines() 全部读取,将每一行作为list中的元素包装进list,返回list

小技巧:len(f.redlines())可以看出有几行。

(三).文件的写入:(注:写入如需换行需要自己把" "写进去)

f.write() 把内容以字符串的形式通过write()方法写入文件中。

需要紧接f.flush()方法,因为文件是运行在内存中,需要冲刷一下,才会从缓存写入磁盘。类似于“保存”。

f.writelines()小括号中需要是列表,列表中的内容由字符串元素组成。如:f.writelines(["111","222"])

(四).文件关闭:f.close()

(五).查看信息:(不是方法啊!是属性!)

f.closed 返回一个布尔值,查看文件是否已关闭。

f.mode 返回文件打开的模式。

f.name 返回文件名。

(六).光标位置:

f.seek(0,0) 第一个参数:偏移量,往后偏移。第二个参数:起始位置。(注意光标的位置)

f.tell() 返回光标的位置。

(七).with open:

用with open方式打开的文件,里面的语句执行完后会自动关闭文件。无需写flush()了。

with open("a.txt", "a") as f:
    f.read()

二、异常

一旦遇到报错(异常),程序就崩溃终止了,用户体验相当不好。所以,捕获异常非常必要,把可能会报错的代码,包装到 try...except 块中。

尽量避免写BaseException,所有异常的祖宗。

else:正常结束才执行。

finally:无论如何都会执行,必定会执行。比如:操作一个文件输入输出时出错了,弹药保护已有的内容,就把关不语句放进finally块中。finally块中一般不写逻辑语句。

raise:自己手动抛出异常。

python3的官方帮助文档可以查看内建异常:

原文地址:https://www.cnblogs.com/xuanlv-0413/p/9276240.html