基础之文件操作

  • Post author:
  • Post category:其他




文件操作

fp = open(文件名,模式,编码集)
fp = 文件io对象(文件句柄)
i : input输入
o : output输出
fp.write() 写入
fp.read() 读取



一.文件的写入操作

fp = open("123.txt",mode="w",encoding="utf-8")
fp.write("写入数据")
fp.close()



二.文件的读取操作

fp = open("123.txt",mode="r",encoding="utf-8")
res = fp.read()
fp.close()
print(res)



三.字节流

字节流:数据传输或者存储的一种二进制格式,多个字节组合在一起就是字节流
b"abc" : b开头的字节流,必须符合ascii编码标准,不能是中文或者其他字符
encode() 编码 将字符串转化为字节流(Bytes流)
decode() 解码 将Bytes流转化为字符串
utf-8编码 一个中文三个字节



四.字节流的写入操作

字节流模式不需要指定任何编码集
res = "初步练习文件操作"
fp = open("123.txt",mode="wb")
fp.write(res)
fp.close()



五.字节流的读取操作

fp = open("123.txt",mode="rb")
res = fp.read()
fp.close()
print(res)



六.复制图片

二进制字节流 -> 图片,音频,视频

#把图片中所有的字节流获取下
pathvar = r"图片的所在路径,选中测试图片鼠标右键选择路径进行复制.png"
fp = open(pathvar,mode="rb")
bytes_data = fp.read()
fp.close()
print(bytes_data)
#把获取到的文件存到另一个文件中,形成图片文件
pathvar = r"第二个图片.png"
fp = open(pathvar,mode="wb")
fp.write(bytes_data)
fp.close()
#直接在系统下查看新的图片


补充:复制图片,使用with语法进行优化[可以实现文件关闭功能]
#知识点:as起别名
pathver1 = r"路径.png"
pathver2 = r"路径.gif"
#组合简写
with open(pathver1,mode="rb") as f1 , open(pathver2,mode="wb") as f2:
    bytes_data = f1.read()
    fp2.write(bytes_data)



七,文件的相关函数



刷新缓冲区flush
当文件关闭的时候自动刷新缓冲区
当整个程序运行结束的时候自动刷新缓冲区
当缓冲区写满,会自动刷新缓冲区
手动刷新缓冲区(可以不通过关闭,直接手动刷新,直接把内容写入文件中)
readable() 判断文件是否可读
writeable() 判断文件是否可写

readline() 读取一行内容
	括号内的参数不写,默认读取当行(注意 是在文件内)
    参数>当前行总个数 -> 按照当前行读取
    参数<当前行总个数 -> 按照参数个数读取
    #注意:
        1用该函数读取所有内容
        	先读取一行,如果不为同,开始循环,(循环内再读取一行)
        2直接遍历fp(可迭代对象) for i in fp:
readlines() 将文件中的内容按照换行读取到列表当中
	#数据清洗,遍历列表,用strip()去掉两边的空白符.再重新把数据追加回列表中
writelines() 将内容是字符串的可迭代性数据写入文件中, 参数:内容为字符串类型的可迭代性数据
    #注意:可迭代性数据里面的内容必须是字符串
truncate() 把要截取的字符串提取出来,然后清空内容,将提取出来的字符串,重新写入文件中(字节)
	截取 -> 清空 -> 重写



文件的扩展模式

#utf-8 编码格式下默认一个中文三个字节,一个英文或者一个符号,占用一个字节
	read=() 读取字符的个数(里面的参数代表字符的个数)
	seek() 调整指针的位置(里面的参数代表字节的个数)
		seek(0) 移动到开头
        seek(0,2) 移动到结尾 ,固定的语法
        注意:有可能移动光标移动到字符中的一个字节里,出现无效的开始字节,出现报错
     tell() 当前光标左侧所有的字节数(返回字节数)


r+ 先读后写[指针光标默认开头,不能自动创建新文件]
#注意:移动光标位置


r+先写后读
先写,为了防止覆盖原内容,直接把光标放到最后


w+ 可读可写 [清空重写,文件不存在自动创建]


a+ 可读可写 [末尾追加,文件不存在自动创建]
如果要读需要移动光标在开头


a+,r+区分
a+ 即使移动光标,也强制在最后追加



版权声明:本文为wo41521原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。