转载请注明出处https://blog.csdn.net/weixin_45163516
读写文件
普通程序读写文件的时候需要向操作系统发出请求,请求操作系统打开一个文件对象,通过这个文件对象来进行读写
with open(str1,"r",encoding="utf-8") as f:
pass
f =open(path,mode,encoding,errors)
path:文件路径
mode:模式 r:读取,默认
encoding:编码格式
errors默认strict[严格的] ignore 忽略编码错误
f:打开的文件对象,f是一个迭代f器
f.read()
一次性读取所有内容
f.read(size)
一次性读取size字节
f.readlines()
一次性读取所有行
f.readline()
一次性读取一行
f.close()
关闭文件
当使用文件读写时,需要在结尾使用f.close语句,不然会出现错误
with语句
语法:
with open(path,mode,encoding) as 文件名:
对文件进行操作
当文件一旦关闭,不能对此文件进行操作。
读取2进制文件with
open(path,mode) as f:
f.read()
mode: rb 读取二进制文件
结论:普通文件可以使用r/rb来进行读取,但是二进制的文件
只能使用rb的方式来进行读取。
二进制文件:图片,视频,音频
open(path,mode,encoding)
path:路径
mode:w/a
encoding:写入编码格式
f.write(str1)
写入的必须是字符串
使用w的方式写入:当path存在的时候,则覆盖,若path不存在
则创建。
使用a的方式写入的时候,若path存在,则追加,若path不存在,
则创建
f.writelines([“hello”,“good”,“nice”])
将列表中的字符串一次性写入到文件中
内存中读写
StingIO
from io import StringIO
from io import BytesIO
bio = BytesIO()
# 要求写入的必须是二进制的
bio.write("中国".encode())
# 查看bio内容
print(bio.getvalue().decode())
csv文件读写
#-- author:zhangjiao --
import csv
‘’’
需求:封装一下csv文件的读取,要求读取前n行,并且读取的数据以列表的方式返回。
‘’’
def readcsv(path,n):
with open(path,"r",encoding="gbk",errors="ignore") as f:
csv_reader = csv.reader(f)
datalist = []
for x in range(n):
try:
datalist.append(next(csv_reader))
except StopIteration as e:
break
return datalist
def readandwrite(path1,path2,n):
with open(path1,"r",encoding="gbk") as f:
with open(path2,"w",encoding="gbk") as f2:
csv_reader = csv.reader(f)
csv_writer = csv.writer(f2)
for x in range(n):
csv_writer.writerow(next(csv_reader))
if __name__ == '__main__':
res = readcsv("002.csv",5)
print(res)
with open("002.csv","r",encoding="gbk") as f:
csv_reader = csv.reader(f)
print(next(csv_reader))
with open("0002.csv","w",encoding="gbk") as f2:
csv_writer = csv.writer(f2)
for row in res:
csv_writer.writerow(row)
readandwrite("002.csv","1.csv",50)