Python基础:读写文件操作详解

导语:今天学习下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语句,我们可以捕获并处理可能发生的异常,从而避免程序因未处理的异常而崩溃。

总结

下次见,拜拜~

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值