导语:今天学习下python读写文件操作!
1. 打开文件
在Python中,我们使用with open()
语句来打开文件。这种方式不仅简洁,而且可以确保文件在操作完成后会被正确关闭。with open()
的基本语法如下:
with open(文件路径, 读写模式) as 文件对象:
# 文件操作代码
其中,文件路径
可以是绝对路径或相对路径,读写模式
有以下几种:
'r'
:读取文件,默认值。'w'
:写入文件,如果文件存在则覆盖,不存在则创建。'a'
:追加写入文件,如果文件不存在则创建。'r+'
:同时读写文件,如不存在报错。'w+'
:同时读写文件,如果文件存在则覆盖,不存在则创建。'a+'
:同时读写文件,如果文件不存在则创建。
2. 读取文件内容
2.1 一次性读取全部内容
如果你想一次性读取整个文件的内容,可以使用read()
方法:
filepath = '/Users/cuiqingqing/Desktop/note20240801.txt'
with open(filepath, 'r', encoding='utf-8') as f:
print(f.read())
2.2 逐行读取
如果你想逐行读取文件内容,可以使用readline()
方法:
with open(filepath, 'r', encoding='utf-8') as f:
print(f.readline())
2.3 读取所有行到列表
如果你想将文件的所有行读取到一个列表中,可以使用readlines()
方法:
with open(filepath, 'r', encoding='utf-8') as f:
print(f.readlines())
2.4 读取所有行到列表(无换行符)
如果你想读取所有行到一个列表中,但不包含换行符,可以使用read().splitlines()
:
with open(filepath, 'r', encoding='utf-8') as f:
print(f.read().splitlines())
3. 写入文件
3.1 清空写入
如果你想清空文件内容并写入新内容,可以使用'w'
模式:
filepath1 = './test01.txt'
with open(filepath1, 'w', encoding='utf-8') as f:
f.write('清空写入内容')
3.2 追加写入
如果你想在不覆盖原有内容的情况下追加内容,可以使用'a'
模式:
with open(filepath1, 'a', encoding='utf-8') as f:
f.write('追加写入内容')
3.3 同时读写文件
如果你想在一个文件中同时进行读写操作,可以使用'r+'
、'w+'
或'a+'
模式。这里有一个使用'r+'
模式的例子:
filepath1 = './test02.txt'
with open(filepath1, 'r+', encoding='utf-8') as f:
f.write('A')
注意:使用'r+'
模式时,如果文件不存在,将会报错。
4. 文件指针操作
在文件操作中,我们有时需要知道当前文件指针的位置,或者需要移动文件指针。这时,我们可以使用tell()
和seek()
方法。
tell()
:返回当前文件指针的位置。seek(offset, whence=0)
:移动文件指针到指定位置。offset
是偏移量,whence
是参考位置,默认为0(文件开头)。with open(filepath1, 'r+', encoding='utf-8') as f: print(f.write('A')) print(f.tell()) # 输出当前指针位置 f.seek(0) # 将指针移动到文件开头 print(f.tell()) # 输出当前指针位置 print(f.read()) # 读取文件内容
5. 路径问题
在文件处理中,正确理解和使用路径是非常重要的。路径定义了文件在文件系统中的位置。下面我们将详细介绍绝对路径和相对路径。
5.1 绝对路径
绝对路径是从文件系统的根目录开始的完整路径。无论当前工作目录在哪里,绝对路径都能准确地指向文件的位置。例如:
filepath1 = '/Users/cuicui/Acode/autoLearn/baseLearn/文件读取/note20240801.txt' with open(filepath1, 'r', encoding='utf-8') as f1: print(f1.read())
在上面的例子中,
filepath1
是一个绝对路径,它指定了文件在用户cuicui
的目录下的确切位置。5.2 相对路径
相对路径是相对于当前工作目录的路径。当前工作目录通常是程序启动时所在的目录。使用相对路径时,我们需要了解以下符号的含义:
.
:代表当前目录。
..
:代表上级目录。
# 绝对路径
filepath1 = '/Users/cuicui/Acode/autoLearn/baseLearn/文件读取/note20240801.txt'
# 相对路径 一个点代表当前路径,两个点代表上级路径
filepath2 = './note20240801.txt'
- 当你需要确保文件操作的独立性,不受当前工作目录变化的影响时,使用绝对路径。
- 当你的文件结构相对简单,且不经常改变时,使用相对路径可以使代码更加灵活和可移植。
6. 错误处理
在实际的文件操作中,可能会遇到各种错误,如文件不存在、权限不足等。为了提高代码的健壮性,我们应该添加错误处理机制。以下是一个简单的错误处理示例:
filepath = './note20240801.txt'
try:
with open(filepath, 'r', encoding='utf-8') as f:
print(f.read())
except FileNotFoundError:
print(f"文件 {filepath} 不存在,请检查路径是否正确。")
except PermissionError:
print(f"没有权限读取文件 {filepath}。")
except Exception as e:
print(f"读取文件时发生错误:{e}")
通过使用try-except
语句,我们可以捕获并处理可能发生的异常,从而避免程序因未处理的异常而崩溃。
总结
下次见,拜拜~