Python基础——IO以及文件处理

目录

1. 打开和关闭文件

2. 打开文件的模式

3. 使用 with 语句打开文件

4. 读取文件内容

5. 写入文件

6. 文件指针与偏移

7. 文件操作异常处理

8. 文件操作模块


在Python中,IO(输入输出)操作以及文件处理是非常常见的任务,通常涉及读取和写入数据。Python提供了丰富的标准库来处理文件和执行IO操作,如 open() 函数、with 语句、osshutil 模块等。

下面我将介绍Python中的文件处理与IO操作,涵盖常用的文件操作、文件打开模式、读取与写入文件的方式以及如何处理文件相关的异常等内容。

1. 打开和关闭文件

打开文件:在Python中,处理文件的最基本方式是使用 open() 函数来打开文件。open() 返回一个文件对象,这个对象可以用来进行文件的读取和写入操作。

# 打开文件
file = open('example.txt', 'r')  # 以只读模式打开文件

在这里,'r' 是打开文件的模式,后面会详细介绍不同的模式。

关闭文件:当文件操作完成后,最好使用 close() 方法来关闭文件,以释放系统资源。

file.close()  # 关闭文件

2. 打开文件的模式

在打开文件时,open() 函数接受第二个参数,表示打开文件的模式。常见的模式有:

  • 'r':只读模式,文件必须存在。
  • 'w':写入模式,文件不存在时会创建,存在时会覆盖原有内容。
  • 'a':追加模式,文件不存在时会创建,存在时会在文件末尾追加内容。
  • 'b':二进制模式,用于处理非文本文件(如图片、音频文件等)。可以与其他模式结合使用(如 'rb',表示以二进制只读模式打开文件)。
  • 'x':创建模式,如果文件已存在则抛出异常。
  • 't':文本模式,默认值。用于读取文本文件。

示例:

file = open('example.txt', 'w')  # 创建并写入文件

3. 使用 with 语句打开文件

with 语句用于打开文件时,它会在文件操作完成后自动关闭文件,避免忘记关闭文件的情况。推荐使用 with 语句来处理文件,以确保文件能及时关闭。

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

在使用 with 语句时,不需要显式调用 close(),Python会自动处理。 

4. 读取文件内容

读取整个文件:

with open('example.txt', 'r') as file:
    content = file.read()  # 读取整个文件内容
    print(content)

按行读取文件: 

with open('example.txt', 'r') as file:
    lines = file.readlines()  # 返回文件内容的列表,每一项是文件的一行
    for line in lines:
        print(line.strip())  # 使用 strip() 去掉行末的换行符

逐行读取文件:

with open('example.txt', 'r') as file:
    for line in file:  # 逐行读取
        print(line.strip())  # 输出每行内容

5. 写入文件

写入文本到文件:

如果文件不存在,会创建文件;如果文件已存在,会覆盖原有内容。

with open('example.txt', 'w') as file:
    file.write("Hello, Python!\n")  # 写入单行
    file.write("Welcome to file handling.\n")

追加到文件:

如果希望在文件末尾追加内容,而不是覆盖原有内容,可以使用 'a' 模式。

with open('example.txt', 'a') as file:
    file.write("Appending new content.\n")

写入多行:

with open('example.txt', 'w') as file:
    lines = ["Line 1\n", "Line 2\n", "Line 3\n"]
    file.writelines(lines)  # 写入多行

6. 文件指针与偏移

文件对象有一个内部指针,表示当前读取的位置。你可以使用以下方法来控制文件指针的位置。

tell():返回当前文件指针的位置。

with open('example.txt', 'r') as file:
    print(file.tell())  # 返回文件指针当前位置
    file.read(5)        # 读取5个字符
    print(file.tell())  # 再次查看文件指针位置
  • seek(offset, whence):将文件指针移动到指定位置。
  • offset:偏移量(字节数)。
  • whence:参考点,默认是 os.SEEK_SET,表示从文件开头开始计算。还可以是 os.SEEK_CUR(当前位置)或 os.SEEK_END(文件末尾)。
with open('example.txt', 'r') as file:
    file.seek(5)  # 将文件指针移到文件的第6个字符位置
    content = file.read()  # 从第6个字符开始读取
    print(content)

7. 文件操作异常处理

在进行文件操作时,可能会遇到各种异常,比如文件不存在、权限问题等。我们可以使用 try-except 语句来捕获并处理这些异常。

try:
    with open('example.txt', 'r') as file:
        content = file.read()
except FileNotFoundError:
    print("文件不存在")
except PermissionError:
    print("没有权限访问文件")
except Exception as e:
    print(f"发生错误: {e}")

8. 文件操作模块

Python标准库提供了一些模块来辅助文件操作,常见的有:

  • os 模块:用于处理文件和目录,提供文件路径操作、权限修改等功能。
  • shutil 模块:用于高阶文件操作,如文件复制、删除、移动等。

示例:使用 os  shutil

import os
import shutil

# 检查文件是否存在
if os.path.exists('example.txt'):
    print("文件存在")

# 获取文件的大小
file_size = os.path.getsize('example.txt')
print(f"文件大小: {file_size} 字节")

# 复制文件
shutil.copy('example.txt', 'copy_example.txt')  # 复制文件到新位置

# 删除文件
os.remove('copy_example.txt')  # 删除文件

总结

Python的文件操作非常强大且灵活,通过简单的API,你可以轻松地实现文件的读写、路径操作、异常处理等功能。记住,最好使用 with 语句来打开文件,以确保文件能够被正确关闭,避免资源泄漏。同时,可以利用 osshutil 等标准库进行更复杂的文件操作。

本文是转载文章,点击查看原文
如有侵权,请联系 lx@jishuguiji.net 删除。