【学习笔记】--- 老男孩学Python,day9, 文件操作
2024-08-24 05:22:47
有 + 就是有光标,注意光标位置
不同模式打开文件的完全列表: http://www.runoob.com/python/python-files-io.html
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
下图很好的总结了这几种模式:
模式 | r | r+ | w | w+ | a | a+ |
---|---|---|---|---|---|---|
读 | + | + | + | + | ||
写 | + | + | + | + | + | |
创建 | + | + | + | + | ||
覆盖 | + | + | ||||
指针在开始 | + | + | + | + | ||
指针在结尾 | + | + |
今日主要内容文件操作: 1. r
# 路径有两种: # 1. 相对路径, 相对于你当前程序所在的文件夹.(必须掌握) # ../ 返回上一层目录 # 相对的是当前程序所在的文件夹 # 2. 绝对路径. 1.从磁盘根目录寻找. 2.互联网上的一个绝对路路径 f = open("file/wuse", mode="r", encoding="utf-8") s = f.read() f.close() # 关闭句柄 print(s) f = open("吃的", mode="r", encoding="utf-8") for line in f: # 每次读取一行. 赋值给前面的line变量 print(line) f.close()
2. w
f = open("小护士模特", mode="w", encoding="utf-8") # 写入之前会情掉原来的内容 f.write("杜十娘") f.flush() f.close()
wb
f = open("小护士模特",mode="wb") # 读取的内容直接就是字节 f.write("你不好".encode("utf-8")) f.close() # w, r, a === wb, rb, ab b: 处理的是非文本
3. a
f = open("小护士模特", mode="a", encoding="utf-8") # 在原来的基础上进行追加内容. f.write("小龙女") f.flush() f.close()
4. r+ 读写模式. 需要移动光标进行反复读写
# f = open("老师点名", mode="r+", encoding="utf-8") # r+模式, 默认情况下光标在文件的开头, 必须先读, 后写 # f.write("周润发") # s = f.read() # f.flush() # f.close() # print(s) # f = open("精品", mode="r+", encoding="utf-8") # s = f.read(3) # # 不管你前面读了几个. 后面去写都是在末尾 # # f.write("哈哈") # 1.在没有任何操作之前进行写. 在开头写 2. 如果读取了一些内容. 再写, 写入的是最后 # # # print(ss) f = open("精品", mode="r+", encoding="utf-8") # f.read(3) # f.seek(3) # 移动到xx位置 # 移动到开头: f.seek(0) 开头 # 移动到末尾: f.seek(0, 2) 末尾 第二个参数有三个值. 0: 再开头, 1: 在当前, 2: 末尾 #超人的都是精品.abcdefg潘长江是精品巴拉巴拉小魔仙哈哈 # f.seek(6) # 移动6个字节. 2个字 # s = f.read(3) # 读取3个字 # print(s) # f.seek(0) # ss = f.read(3) # print(ss) # s = f.read() # f.seek(0) # ss= f.read() # print(s) # print(ss)
5. w+
f = open("亵渎", mode="w+", encoding="utf-8") # w 操作.会清空原来的内容. w+是不用的. f.write("今天天气") f.seek(0) s = f.read() print(s) f.flush() f.close()
6. a+
7. b bytes 读写操作的是字节. 用在非文本上 8. seek() 移动光标到xx位置 开头: seek(0), 末尾: seek(0,2) 9. 文件修改 创建新文件. 把修改后的内容写入新文件. 删除老文件. 重命名新文件 import os os.remove("")删除文件 os.rename("源文件", "新文件名") 重命名文件
import os with open("吃的", mode="r", encoding="utf-8") as f1, \ open("吃的_副本", mode="w", encoding="utf-8") as f2: # s = f1.read() # ss = s.replace("肉", "菜") # f2.write(ss) for line in f1: s = line.replace("菜", "肉") f2.write(s) os.remove("吃的") # 删除文件 os.rename("吃的_副本", "吃的") # 重命名文件
for line in f: line 一行数据 with open("文件名") as f: 不需要关闭文件句柄
最新文章
- windows上如何搭建Git Server
- HTTPS 双向认证构建移动设备安全体系
- pip install Error - ReadTimeoutError: HTTPSConnectionPool
- go语言 新手学习笔记 go基础教程
- ubifs总体设计分析
- Leetcode: Random Pick Index
- [转载]AppSettings和ConnectionStrings的区别
- Oracle 流式制造功能培训
- Redis系列(1)之安装
- BOT、BT、PPP形式介绍(3)
- profile和bash
- C语言内存申请与使用
- 【Hdu2089】不要62(数位DP)
- Maven项目pom文件设置JDK版本
- Spring Boot 2.x 编写 RESTful API (三) 程序层次 &; 数据传输
- jsp篇 之 Jsp中的内置对象和范围对象
- NLP的原理,框架及具体实例
- Delphi 域名解析为IP地址
- cookie与webStorage区别
- flex 分页