1、什么是文件?

文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位文件的操作核心就:读、写即我们只需要对于进行读写操作,就是对操作系统发起请求,然后由操作系统将用户或者应用程序对文件的读写操作转换成具体的硬盘指令(比如控制盘片转动,控制机械手臂移动来读写数据)

2 为什么要有文件?
因为内存无法永久保存数据,但凡我们想要永久保存数据都需要保存到硬盘中,而操作文件就可以实现对硬件的操作

3、文件的读写模式
控制读写文件内容的结果有两种:t模式text,b模型bytes
1、t模式:文本文件模式
2、b模式:二进制模式
注意:
1、t与b这两种模式均不能单独使用,都需要与r/w/a之一连用
2、默认的内容格式是t
3、只有文本文件才能用t模式,也只有文本文件才有字符编码的概念

4、操作文件的三种模式:
(1)r:read,只读模式
  1、只能读,不能写
  2、在文件不存在时,会报错,在文件存在的时候会将文件指针移动到开头

 1 b.txt内容如下:
 2 啊啊啊啊
 3 哈哈哈哈
 4 呵呵呵呵
 5
 6 打开文件的2种方法
 7  (1)
 8 f=open(r'b.txt',mode='rt',encoding='utf-8')
 9 (2)
10 with open(r'b.txt',mode='rt',encoding='utf-8')as f:
11 print(f.read()) #将文件的内容全部读出来
12  print(f.readline(),end='')#一行一行读的话 需要在末尾加end = ''
13  print(f.readline(),end='')#end = ''去除print末尾的空格
14  print(f.readline(),end='')
15  print(f.readlines()) #将文件内容打印出列表每个值的后面都有\n
16  print(data)
17  f.close()
18 注意(1)方法必须要关闭,(2)方法不需要关闭        

View Code

(2)

w:只写模式
  1、只能写,不能读
  2、在文件不存在时会创建空文件,在文件存在的时候会将文件内容清空

a:只追加写模式
  1、只能写,不能读
  2、在文件不存在时会创建空文件,在文件存在的时候会将指针移动到文件末尾

(1) f=open('d.txt',mode='at',encoding='utf-8')
(2)with open('d.txt',mode='at',encoding='utf-8')as ff.read()f.write('555555\n6666\n')f.writelines(['77777\n','8888888\n','999999999\n'])f.close()#for 循环取值
for line in f:print(line)
可以通过.strip('\n')构造一个有规律的字符串,然后通过.split(‘’)方法将取出的值编程一个一个列表 通过 for 循环 做进一步应用

拷贝文件的操作(with的另外一种用法)

(1)

with open('e.txt','rb') as f,open('j.txt','wt',encoding='utf-8') as f1:

src_data=f.read()

res=src_data.decode('utf-8')

 f=open('c.txt',mode='rb')f.seek(-9,2)print(f.readline().decode('utf-8'))print(f.tell())f.close()

  

print(res,type(res))

f1.write(res)

(2)

with open('e.txt','rb') as f,\
  open('j.txt','wb') as f1:
  f1.write(f.read())

5、文件操作的其他方法:

1、与t模式结合使用

(1)r+t 可读、可写 (2)w+t 可写、可读(3)a+t 可追加写、可读

2、与b模式结合使用

(1)r+b 可读、可写(2)w+b可读、可写 (3)a+t 可追加写、可读

#注关于b模式的文本文件: 写入时候需要encode 读取文件时候需要decode

1,b模式写入
with open('b.txt',mode='rb') as f:data=f.read()#如果想要看到文件中的具体内容需要decodeprint(data.decoding('utf-8'))2、b模式读取
with open('b.txt',mode='wb') as f:f.write('123\n'.encode('utf-8')

3、

f.seek(offset,whence)
offset代表文件的指针的偏移量,单位是字节bytes
whence代表参考物,有三个取值
0:参照文件的开头
1:参照当前文件指针所在位置
2: 参照文件末尾
ps:快速移动到文件末尾f.seek(0,2)

1(0)

f=open('c.txt',mode='rt',encoding='utf-8')
f.seek(9,0)
print(f.tell())  #每次统计都是从文件开头到当前指针所在位置
print(f.readline())
f.close()

2(1)

 f=open('c.txt',mode='rb')f.readline()f.seek(6,1)print(f.readline().decode('utf-8'))print(f.tell())f.close()

 3(2)

 f=open('c.txt',mode='rb')f.seek(-9,2)print(f.readline().decode('utf-8'))print(f.tell())f.close()

6、文件修改、拷贝

 1 修改文件内容的方式一:
 2 思路:先将原文件内容一次性全部读入内存,然后在内存修改完毕后,再
 3 覆盖写回原文件
 4 优点:在修改期间,文件内容只有一份
 5 缺点:当文件过大的情况下或占用过多的内存空间
 6
 7  with open('d.txt','rt',encoding='utf-8') as read_f:
 8      msg=read_f.read()
 9      msg=msg.replace('alex','xiang')
10       print(msg)
11
12  with open('d.txt','wt',encoding='utf-8') as write_f:
13      write_f.write(msg)
14
15 修改文件内容的方式二:
16 思路:
17 1、以读的方式打开原文件,以写的方式打开一个新文件
18 2、从原文件中循环读取每一行内容修改后写入新文件
19 3、删除原文件,将新文件重命名为原文件的名字
20
21 优点:同一时刻只有一行内容存在于内存中
22 缺点:在修改期间,文件内容始终存在两份,但修改完毕后会只留一份
23 import os
24 with open('d.txt','rt',encoding='utf-8') as read_f,\
25         open('d.txt.swap','wt',encoding='utf-8') as write_f:
26     for line in read_f:
27         write_f.write(line.replace('xiang','ALEXSB'))
28
29 os.remove('d.txt')  删除老文件
30 os.rename('d.txt.swap','d.txt')
31
32
33  with open('info.txt',mode='rt',encoding='utf-8')as f:
34      f.seek(9,0)

View Code

7,知识点代码总结

 1 #1、
 2 with open('info.txt',mode='rt',encoding='utf-8')as f:
 3      f.seek(9,0)
 4      print(f.readline()) #愿意跟我去吃鸡么
 5
 6      f.seek(35,0)
 7      print(f.readline())#滚
 8 #2、
 9  with open('info.txt', mode='rb')as f: #1,2模式只能在b模式下使用
10      f.readline()
11      f.seek(6,1)
12      print(f.readline().decode('utf-8')) i am wcl
13      f.seek(-5,2)
14      print(f.readline().decode('utf-8')) study
15 #3、
16  with open('info.txt',mode='rb',encoding='utf-8')as f:
17      print(f.read(4)) 哈喽,愿
18
19  with open('info.txt',mode='rb') as f2:
20      print(f2.read(3))
21
22  with open('1.txt',mode='r',encoding='utf-8') as f1: #先全部读出来
23      data =f1.read()
24      data = data.replace('i','y')
25  with open('2.txt',mode='w',encoding='utf-8') as f1:# 赋值给一个变量在写入一个新的文件
26      f1.write(data)
27 #4、
28  import os
29  with open('2.txt',mode='r',encoding='utf-8')as f ,open('222.txt',mode='w',encoding='utf-8')as f1:
30      for line in f:
31          f1.write(line.replace('i','y'))
32  os.remove('2.txt')
33  os.rename('222.txt','1.txt')

View Code

转载于:https://www.cnblogs.com/wcl0517/p/9136353.html

day07 -文件的基本操作相关推荐

  1. C语言中文件的基本操作函数fprintf和fscanf实例介绍

    C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分 ...

  2. c语言infile和outfile用法,C语言文件读写基本操作DEMO

    DEMO 来源于<C语言实战105例>中的34例:文件读写基本操作 把infile中的内容写到outfile中去 #include #include int main() { FILE * ...

  3. 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构

    文章目录 1 文件的基本操作 1.1 创建文件 1.2 删除文件 1.3 打开文件 1.4 关闭文件 1.5 读文件 1.6 写文件 1.7 文件基本操作小结 2 文件共享 2.1 基于索引结点的共享 ...

  4. 操作系统之文件管理:6、文件的基本操作(创建文件、打开文件、删除文件、关闭文件、读文件、写文件)

    5.文件的基本操作 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 关闭文件 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 1.在系统中有一张系统的文件打开表,用 ...

  5. 【王道考研操作系统】—文件的基本操作

    [王道考研操作系统]-文件的基本操作 一.文件的逻辑结构 按文件是否有结构分为:无结构文件.有结构文件两种. 无结构文件:文件内部的数据就是一系列二进制流或字符流组成.又称流式文件,如Windows操 ...

  6. 文件的基本操作--利用爬取的王者荣耀李信台词进行练习

    文章目录 文件的基本操作 文件打开和关闭 文件打开模式 读取/写入文件 StringIO和BytesIO 内存假文件 上下文管理 os模块 os模块 的目录及文件操作 os.path模块 小练习-爬取 ...

  7. photoshopcs6文件的基本操作

    1.文件的基本操作 ①文件的打开(ctrl+o/直接双击编辑区/拖拽至标题栏处) ②文件的新建(ctrl+N)注意各种参数-单位.分辨率和颜色模式 单位:主要用于显示设备:像素(相对单位): 主要用于 ...

  8. 安装MinIO和使用MinIO Java SDK实现对文件的基本操作

    文章目录 一.MinIO 简介 二.安装 MinIO 1. 使用 Docker 安装 MinIO 2. 进入到 MinIO 的控制台页面 3. 创建 Bucket 4. 修改 Bucket 的 Acc ...

  9. 字符编码与文件的基本操作

    字符编码与文件的基本操作 1 > 字符编码的实际应用 1.1 > 编码与解码含义 1.2 > 编码(encode) 1.3 > 解码(decode) 1.4 > 如何解决 ...

最新文章

  1. ASP.NET弹出窗口技术之增加网站流量方法
  2. QT的QMenuBar类的使用
  3. 常用AT指令集 (转)
  4. 快速学习23种设计模式思想Design Patterns
  5. transporter上传卡正在交付_Xcode11,Transporter上传卡在——正在验证 APP - 正在通过App Store进行认证...
  6. 入门实践,Python数据分析
  7. MyBatis 实现多表查询、resultMap 标签、MyBatis 注解、mybatis运行原理
  8. 开源项目的所有者去世了怎么办?
  9. echo 单引号和双引号
  10. 【笔记】树莓派配置麦克风录音
  11. 三农数据(1996-2020)九:产值:谷物及其他作物、蔬菜园艺、水果、坚果、饮料
  12. 二分法求函数零点:(递归方法和非递归方法)
  13. Windows补丁修复- Microsoft Windows HTTP.sys远程代码执行漏洞 (MS15-034)(CVE-2015-1635)
  14. 在家快发霉了?数据告诉你,网友们都怎么打发时间
  15. mysql 5.7 windows 安装步骤
  16. 2012年度x86服务器虚拟化基础设施魔力象限,五载解读!Gartner x86虚拟化魔力象限...
  17. 每天学命令all_inputs
  18. Kaggle(入门)
  19. win10系统 如何设置定时开关机?
  20. React.createElement使用

热门文章

  1. 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
  2. 有福了,J2EE面试题集锦(附答案)
  3. Windows Phone 7 SDK 7.1 Beta2 发布
  4. as3自定义加载图片类
  5. Winform与Webform中的对话框
  6. java8中的时间处理6 - 格式化
  7. EX2010与EX2013共存迁移01-设计及说明
  8. 如何设计 Web App 应用架构?「两分钟了解 IOING」
  9. mongoose笔记
  10. openresty 前端开发序