内置 open 函数中模式 a、a+、w、w+ 和 r+ 的区别?

在Python编程中,内置的open函数允许我们以不同的模式打开文件进行读写操作。这些模式各有特点,用于解决不同的需求。

1. r: 打开并读取文件。如果文件不存在,会抛出FileNotFoundError异常。
2. w: 写入文件。如果文件存在,内容会被覆盖。如果文件不存在,创建一个新的文件。
3. a: 在文件的末尾追加写入。如果文件存在,内容会在文件的末尾追加。如果文件不存在,创建一个新的文件。
4. r+: 打开并读写文件。如果文件不存在,会抛出FileNotFoundError异常。
5. w+: 写入并读写文件。如果文件存在,内容会被覆盖。如果文件不存在,创建一个新的文件。
6. a+: 在文件的末尾追加读写。如果文件存在,内容会在文件的末尾追加。如果文件不存在,创建一个新的文件。

下面是一个简单的代码示例,展示了如何使用这些模式打开一个文件进行读写:

```python
# 打开并读取文件
with open('example.txt', 'r') as f:
    content = f.read()
    print(content)

# 写入文件
with open('example.txt', 'w') as f:
    f.write('Hello, world!')

# 在文件的末尾追加写入
with open('example.txt', 'a') as f:
    f.write('\nThis is appended content.')

# 打开并读写文件
with open('example.txt', 'r+') as f:
    content = f.read()
    print(content)
    f.seek(0, 2)  # 将文件指针移动到文件的末尾
    f.write('\nThis is appended content in r+ mode.')

# 在文件的末尾追加读写
with open('example.txt', 'A+') as f:
    content = f.read()
    print(content)
    f.seek(0, 2)  # 将文件指针移动到文件的末尾
    f.write('\nThis is appended content in A+ mode.')
```

这个示例中,我们首先以只读模式打开并读取一个文件,然后以写模式写入内容,接着在文件的末尾追加写入内容。然后我们再次以读写模式打开并读取文件,然后在文件的末尾追加读写内容。

测试用例:

```python
# 假设example.txt文件内容为'Hello, world!'
with open('example.txt', 'r') as f:
    content = f.read()
    assert content == 'Hello, world!', "Test case failed."

with open('example.txt', 'w') as f:
    f.write('Hello, Python!')

with open('example.txt', 'r') as f:
    content = f.read()
    assert content == 'Hello, Python!', "Test case failed."

with open('example.txt', 'A') as f:
    f.write('\nHello, again!')

with open('example.txt', 'r') as f:
    content = f.read()
    assert content == 'Hello, Python!\nHello, again!', "Test case failed."

with open('example.txt', 'r+') as f:
    content = f.read()
    assert content == 'Hello, Python!\nHello, again!', "Test case failed."
    f.seek(0, 2)  # 将文件指针移动到文件的末尾
    f.write('\nHello, again in r+ mode!')

with open('example.txt', 'r') as f:
    content = f.read()
    assert content == 'Hello, Python!\nHello, again!\nHello, again in r+ mode!', "Test case failed."

with open('example.txt', 'A+') as f:
    content = f.read()
    assert content == 'Hello, Python!\nHello, again!\nHello, again in r+ mode!', "Test case failed."
    f.seek(0, 2)  # 将文件指针移动到文件的末尾
    f.write('\nHello, again in A+ mode!')

with open('example.txt', 'r') as f:
    content = f.read()
    assert content == 'Hello, Python!\nHello, again!\nHello, again in r+ mode!\nHello, again in A+ mode!', "Test case failed."
```

如果要对这个模式进行测试,可以使用Python的unittest库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潮易

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值