文件操作 Bertha 。 2022-01-07 01:21 306阅读 0赞 计算机文件:硬盘中一块储存空间(虚拟的文件) 文件操作:根据文件名来操作硬盘的那块存储空间,操作方式为 读read,写write 文件的模式: r: 读 w: 写(无创建,有清空) a: 追加(有创建的功能) t: 文本操作(默认模式) r=>rt w=>wt a=>at b: 非文本文件必须采用二进制模式来处理 +: 可读可写 r+: 不会创建文件的可读可写 | w+:创建清空文件的可读可写 | a+:创建不清空文件(追加)的可读可写 使用文件的三大步骤: 1,打开文件 2,操作文件 3,关闭文件(\*\*\*\*\*) 1、打开文件 变量名 = 文件空间 文件路径 操作模式(读|写) 编码 f = open('a.txt', 'r', encoding='utf-8') 2、操作文件 data = f.read(3) \# 将所有内容读取出来,如果设置读取长度,按照规定长度读取数据 print(data) 读取文件的方法(r): ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] 一次读取一行 line = f.readline() print(line) line = f.readline() print(line) 按行一次性全部读出 lines = f.readlines() print(lines) 逐步一行一行读取 l = [] for line in f: print(line) l.append(line) print(l) s = set() for line in f: # print(line) s.add(line) print(s) 3、关闭文件 f.close() \# 释放操作系统对文件的持有,变量f还被应用程序持有 基础写(w) 文件不存在:会新建文件,再操作文件 文件存在:先清空文件,再操作文件 w = open('b.txt', 'w', encoding='utf-8') w.write('456') w.close() w.flush()把内存文件刷入硬盘 \#在写入大量数据,要及时处理内存空间不然内存可能溢出导致数据丢失 w.close() \#1;把内存的数据刷新到硬盘中 2;释放文件资源 完成文本复制 ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] r = open('1.txt', 'r', encoding='utf-8') w = open('11.txt', 'w', encoding='utf-8') for line in r: # 遍历就是一行一行读 取读文件的流 w.write(line) w.flush() w.close() r.close() 借助读写,完成追加 ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] with open('1.txt', 'rt', encoding='utf-8') as f1: data = f1.read() data += '666' with open('1.txt', 'wt', encoding='utf-8') as f2: f2.write(data) 模式a: a为写模式,在原数据后追加写入新数据 with open('1.txt', 'a', encoding='utf-8') as f: f.write('777') with 打开文件: with open('1.txt', 'rt', encoding='utf-8') as f: f.read() whith 完成文本复制 先读后写 ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] with open('source.txt', 'r', encoding='utf-8') as f1, \ open('target.txt', 'a', encoding='utf-8') as f2: # 读取一个字节,如果是行/文件等结束标识,就返回该标识,否则返回None print(f1.newlines) first_data = f1.read(9) f2.write(first_data) f2.flush() print(f1.newlines) second_data = f1.readline() f2.write(second_data) f2.flush() last_data = f1.read() f2.write(last_data) f2.flush() print(f1.newlines) data = f1.read() print(data) 边读边写赋值 ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] with open('source.txt', 'r', encoding='utf-8') as f1: with open('target.txt', 'a+', encoding='utf-8') as f2: for line in f1: f2.write(line) 非文本文件复制 with open('333.mp4', 'rb') as f1: with open('666.mp4', 'wb+') as f2: for line in f1: f2.write(line) x:写模式,创建文件,如果文件以存在,就抛异常 with open('000.txt', 'x', encoding='utf-8') as f: pass 方法:seek(偏移量, 偏移位置) 偏移量:移动的字节数,负数是结合模式1,2往前偏移 偏移位置: -- 0 - 从文件开始位置开始偏移 | 1 - 从当前游标位置开始偏移 | 2 - 从文件末尾开始偏移 b'你好1234567890' # 游标读 with open('source.txt', 'rb') as f: d1 = f.read(11) print(d1) # print(d1.decode('utf-8')) # 当前游标的位置 print(f.tell()) # 游标操作 - 从末尾位置开始 f.seek(-3, 2) d2 = f.read() print(d2.decode('utf-8')) # 890 # # 游标操作 - 从当前位置开始 # f.seek(-3, 1) # d2 = f.read() # print(d2.decode('utf-8')) # 34567890 # # 游标操作 - 从头开始 # f.seek(3, 0) # d2 = f.read() # # print(d2) # print(d2.decode('utf-8')) # 好1234567890 # 游标写:会覆盖书写 with open('source.txt', 'rb+') as f: f.seek(11) # print(f.read()) f.write(b'000') print("-------------------------------------") # 案例 with open('001.png', 'rb') as f: data = f.read() print(len(data)) # 在大文件中,开头| 1/3 | 2/3 | 末尾 各取10个字节拼接成秒传的信息依据 # 形成秒传规则 tagData = b'' with open('001.png', 'rb') as f: # 通过其他途径(sys模块)来获取文件总大小 data = f.read() length = len(data) # 开头 f.seek(0, 0) d1 = f.read(10) # 1/3 f.seek(length // 3, 0) d2 = f.read(10) # 2/3 f.seek(length // 3 * 2, 0) d3 = f.read(10) # 末尾 f.seek(-10, 2) d4 = f.read(10) tagData = d1 + d2 + d3 + d4 # 秒传依据 print(tagData) newData = b"" with open('001.png', 'rb') as f: data = f.read() length = len(data) f.seek(0, 0) newData += f.read(10) f.seek(length // 3, 0) newData += f.read(10) f.seek(length // 3 * 2, 0) newData += f.read(10) f.seek(-10, 2) newData += f.read(10) if newData == tagData: print('秒传成功') else: print('慢慢传去吧') 转载于:https://www.cnblogs.com/wangtenghui/p/10609719.html [ContractedBlock.gif]: https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif [ExpandedBlockStart.gif]: /images/20211227/fc54f83f7684401699a80e1d075ca018.png
相关 文件操作 一、文件操作。 1、为什么要学习文件操作? 程序运行时产生的数据属于临时数据,程序一旦运行结束都会释放了。 通过文件可以将数据持久化。 C++中对文件操作需要包 偏执的太偏执、/ 2022年12月27日 11:26/ 0 赞/ 139 阅读
相关 文件操作 注意下面代码所产生的问题。 这一段是读文件,没有什么问题。 define _CRT_SECURE_NO_WARNINGS include<stdio.h> 喜欢ヅ旅行/ 2022年07月19日 02:38/ 0 赞/ 215 阅读
相关 文件操作 1.系统调用 所谓系统调用,是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。 2.文件描述符 文 短命女/ 2022年07月16日 10:44/ 0 赞/ 233 阅读
相关 文件操作 在文件打印三个hello,每打印一个换一行 include <stdio.h> include <stdlib.h> includ 怼烎@/ 2022年07月12日 23:49/ 0 赞/ 363 阅读
相关 文件操作 能调用方法的一定是对象 打开文件的模式有: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 曾经终败给现在/ 2022年05月21日 06:53/ 0 赞/ 267 阅读
相关 文件操作 能调用方法的一定是对象 打开文件的模式有: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 r,只读模 深碍√TFBOYSˉ_/ 2022年05月20日 01:24/ 0 赞/ 263 阅读
相关 文件操作 include <cstdio> include <cstdlib> include <conio.h> int main() { 不念不忘少年蓝@/ 2022年01月28日 12:31/ 0 赞/ 307 阅读
相关 文件操作 1. r模式 1.1 全部读取 我们先来建一个文件,放到D盘根目录下,文件内容如图 ![1542801-20181227153807057-383845746.p 青旅半醒/ 2022年01月07日 04:05/ 0 赞/ 418 阅读
相关 文件操作 计算机文件:硬盘中一块储存空间(虚拟的文件) 文件操作:根据文件名来操作硬盘的那块存储空间,操作方式为 读read,写write 文件的模式: r: 读 Bertha 。/ 2022年01月07日 01:21/ 0 赞/ 307 阅读
相关 文件操作 1.文件操作初识 操作文件的方式: f = open("文件路径","mode="模式",encoding = "编码) open: 调用操作系统打开文件. mod 灰太狼/ 2021年10月19日 12:14/ 0 赞/ 369 阅读
还没有评论,来说两句吧...