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())可以看出有几行。
(三).文件的写入:(注:写入如需换行需要自己把"\n"写进去)
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的官方帮助文档可以查看内建异常:
|