一、文件读写
python的文件操作和C是兼容的
1.读文本文件
读文件操作如下:
f = open("F:/1.txt", "r")
data = f.read()
print(data)
其中"r"表示read,读文件,再使用read()方法就把文件内容读取出来了
和Java一样,操作文件需要close掉,并且强烈建议在finally中close,代码如下:
try:
f = open("F:/1.txt", "r")
data = f.read()
print(data)
finally:
if f:
f.close()
但是!Python这里又支持了with操作,这比Java必须要写上面类似的代码确实要简洁不少:
with open("F:/1.txt", "r") as f:
print(f.read())
这样,try finally以及close等全部可以省略了!
这里read()也可以加参数size来限制读取的字节数,防止一次性读取太多而爆掉:
print(f.read(4))
或者按行读取也是阔以的:
readline() # 读取一行
readlines() # 读取所有行,返回list
for line in f.readlines():
print(line.strip()) # 把末尾的'\n'删掉
这种带有read()方法的对象称为 file-like Object,常见的有StringIO
2.读二进制文件
扫描二维码关注公众号,回复:
65736 查看本文章
使用rb模式打开即可:
f = open("F:/1.jgp", "rb")
f.read()
3.字符编码
默认是UTF-8,指定编码可以添加encoding参数
f = open("F:/1.txt", "r", encoding="GBK")
f.read()
忽略一些乱七八糟的错误,可以使用errors:
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
4.写文件
和读类似,w、wb进行文本文件、二进制文件的写,文件编码同读文件的操作
with open("F:/1_new.txt", "w") as f:
f.write("Hello Python3!")
w是覆盖写的形式,追加使用a参数,完整参照文档
二、StringIO与BytesIO
1.StringIO
在内存中读写string,称之为StringIO。它可以在内存中进行读写:
from io import StringIO
f = StringIO()
f.write("Hello ")
f.write("Python3!")
print(f.getvalue())
可以像文件一样进行操作:
from io import StringIO
f = StringIO("Hello\nPython3!")
while True:
line = f.readline()
if line == "":
break
print(line.strip())