目录
前言
读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。
在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)
文件读写三步走:
打开文件-->读写文件-->关闭文件
一、打开文件
在打开文件之前先学习一下文件的位置这个概念
1.文件位置
在文件系统中,位置可以分为绝对位置和相对位置,它们决定了文件或目录在文件系统中的位置。
绝对位置:
绝对位置是文件或目录在文件系统中的完整路径,从根目录开始直到文件或目录的位置。它不依赖于当前工作目录。
例如,在Windows系统中的绝对位置可能是:
C:\Users\Username\Documents\file.txt
D:\Projects\myproject\data\output.csv
可以看出,绝对位置是从盘符开始的。
相对位置:
相对位置是相对于当前工作目录或另一指定目录的路径。它不包含根目录,而是相对于某个基准位置的路径。
例如,在当前工作目录为 C:\Users\Username\Documents\
的情况下,相对路径可能是:
file.txt
(相对于当前目录)../Data\output.csv
(相对于当前目录的上级目录中的 Data 文件夹)
相对位置里用./表示同级目录下的文件,用../表示上级目录下的文件
2.open()方法
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)
完整形式:
参数说明:
- file: 必需,文件路径(相对或者绝对路径)
- mode: 可选,文件打开模式,默认为r
- encoding: 一般使用utf8编码
代码实例:
#绝对路径
# 打开文件 "D:/Code/python_code/day07/fp",以写入模式进行操作,并指定编码为 UTF-8
fp = open(r"D:/Code/python_code/day07/fp", "w", encoding="utf8")
#相对路径
# 打开相对路径 "../day08/HomeWork" 的文件,以读取模式进行操作,并指定编码为 UTF-8
f2 = open(r"../day08/HomeWork", "r", encoding="utf8")
# ========= ===============================================================
# Character Meaning
# --------- ---------------------------------------------------------------
# 'r' 打开文件用于读取(默认模式)
# 'w' 打开文件用于写入,先截断文件(即清空文件内容)
# 'x' 创建新文件并打开用于写入
# 'a' 打开文件用于写入,如果文件存在则追加到文件末尾
# 'b' 二进制模式
# '+' 打开文件用于读写(更新)
# ========= ===============================================================
# 不同mode可以相互灵活组合:r、rb、w、wb等
二、读写文件
1.读取文件
文件内容如下:
#作业
1、将身边的一个事物抽象出一个类。比如老师、学生、桌子、椅子、苹果、香蕉、枕头、被子或任意物品
-提供基本属性、基本的方法。
-通过类创建出几个不同的对象。
-打印它们的属性、调用它们的方法。
```python
```
2、题目 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。带上tryexcept。
```python
```
代码实例:
f2 = open(r"../day08/HomeWork", "r", encoding="utf8")
# read 不传参 取所有数据
# read 传参 取几个字符
# 读取时候 如果同一次读取 就继续往后读
print(f2.read(1))
print(f2.read(1))
print(f2.readline())
print(f2.readline())
# readline 不带参数 读取一行
# 带参数 读几个字符
print(f2.readline(6))
# 参数如果过大 也不会超过这一行
print(f2.readline(100))
# readlines 返回的参数数列表
# 参数没到一行 读一行 参数超过一行读完下一行
print(f2.readlines(34))
# 读取所有的行 存入列表中
print(f2.readlines())
f2.close() # 关闭文件
输出:注释的内容就是每一行打印出来的代码的原因
# # print(f2.read(1))
作 # print(f2.read(1))
业 # print(f2.readline())
1、将身边的一个事物抽象出一个类。比如老师、学生、桌子、椅子、苹果、香蕉、枕头、被子或任意物品
# print(f2.readline())
-提供基本属 # print(f2.readline(6))
性、基本的方法。 # print(f2.readline(100))
['-通过类创建出几个不同的对象。\n', '-打印它们的属性、调用它们的方法。\n', '```python\n']
# print(f2.readlines(34))
['```\n', '2、题目 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。带上tryexcept。\n', '```python\n', '```']
# print(f2.readlines())
2.写入文件
代码实例:
fp = open(r"D:/Code/python_code/day07/fp", "w", encoding="utf8")
# 写文件
# write 往里写入字符串
fp.write("nihao helloworld\n")
print(fp.writable()) # 判断文件的可写性,可写输出True,否则输出False
fp.writelines("nihao\n")
# writelines可以写入字符串列表 把列表合并成大字符串
fp.writelines(["asdad", "dasdadada", "\n", "eeeeee"])
fp.close() # 关闭文件
输出:写入文件操作,若所用位置无该文件,则会创建该文件。
True # 由fp.writable()判断得出
nihao helloworld
nihao
asdaddasdadada
eeeeee
三、关闭文件
关闭文件是一个重要的操作,用于释放系统资源并确保文件内容正确地保存到磁盘
1.close()
使用
文件名.close()
即可关闭文件。
2.with语句
为了确保文件在处理完毕或发生异常时也能正确关闭,推荐使用 with
语句来自动管理文件的关闭
# 使用 with 语句打开文件,自动关闭文件
with open("example.txt", "r") as file:
content = file.read()
print(content)
# 在 with 语句块之外,文件会自动关闭
两种方法各有优缺点,进行简单的文件操作,如果能一次性写完,用with语句比较好;进行比较复杂的操作,比如循环写入文件,若总是开关文件,会对文件造成较大损耗,此时用close()则比较好。