跳转至

文件操作与异常处理

文件读写

在Python中,文件操作是处理数据的重要部分。无论是读取配置文件、处理日志文件,还是保存用户数据,文件操作都是必不可少的。本节将详细介绍如何在Python中打开、读取、写入和关闭文件。

1. 打开文件

在Python中,使用内置的open()函数来打开文件。open()函数的基本语法如下:

file_object = open(file_name, mode)
  • file_name:文件的路径(相对路径或绝对路径)。
  • mode:打开文件的模式,如只读、写入、追加等。

常见的文件模式包括:

  • 'r':只读模式(默认)。
  • 'w':写入模式,会覆盖文件内容。
  • 'a':追加模式,在文件末尾添加内容。
  • 'b':二进制模式,用于处理非文本文件(如图片、视频等)。
  • 't':文本模式(默认)。
  • '+':读写模式。

2. 读取文件

一旦文件被打开,可以使用多种方法来读取文件内容。

2.1 读取整个文件

使用read()方法可以一次性读取整个文件内容。

# 打开文件
file = open('example.txt', 'r')

# 读取文件内容
content = file.read()

# 打印文件内容
print(content)

# 关闭文件
file.close()

注意:使用read()方法时,文件内容会被加载到内存中,因此对于大文件,这种方法可能会导致内存不足。

2.2 逐行读取文件

使用readline()方法可以逐行读取文件内容。

# 打开文件
file = open('example.txt', 'r')

# 读取第一行
line1 = file.readline()
print(line1)

# 读取第二行
line2 = file.readline()
print(line2)

# 关闭文件
file.close()

2.3 读取所有行

使用readlines()方法可以读取文件的所有行,并将其存储在一个列表中。

# 打开文件
file = open('example.txt', 'r')

# 读取所有行
lines = file.readlines()

# 打印每一行
for line in lines:
    print(line)

# 关闭文件
file.close()

3. 写入文件

写入文件与读取文件类似,但需要使用写入模式('w')或追加模式('a')。

3.1 写入文件

使用write()方法可以将字符串写入文件。

# 打开文件(如果文件不存在,会自动创建)
file = open('example.txt', 'w')

# 写入内容
file.write('Hello, World!\n')
file.write('This is a new line.')

# 关闭文件
file.close()

注意:使用'w'模式时,如果文件已存在,其内容会被覆盖。

3.2 追加内容

使用'a'模式可以在文件末尾追加内容。

# 打开文件
file = open('example.txt', 'a')

# 追加内容
file.write('\nThis line is appended.')

# 关闭文件
file.close()

4. 关闭文件

在文件操作完成后,务必使用close()方法关闭文件。关闭文件可以释放系统资源,并确保所有数据都被正确写入文件。

file.close()

5. 使用with语句

为了确保文件在使用后正确关闭,推荐使用with语句。with语句会在代码块执行完毕后自动关闭文件,即使在代码块中发生了异常。

# 使用with语句打开文件
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

6. 处理异常

在文件操作中,可能会遇到各种异常情况,如文件不存在、权限不足等。使用try-except语句可以捕获并处理这些异常。

try:
    with open('nonexistent_file.txt', 'r') as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print('文件不存在!')
except PermissionError:
    print('没有权限访问文件!')

7. 练习题

练习1:读取文件并统计行数

编写一个程序,读取一个文本文件,并统计文件中的行数。

提示:使用readlines()方法读取所有行,然后使用len()函数统计行数。

练习2:写入用户输入到文件

编写一个程序,提示用户输入多行文本,并将这些文本写入到一个文件中。用户可以输入exit来结束输入。

提示:使用while循环不断获取用户输入,直到用户输入exit

练习3:处理大文件

编写一个程序,逐行读取一个大文件(如日志文件),并统计文件中包含特定关键字的行数。

提示:使用readline()方法逐行读取文件,避免一次性加载整个文件到内存中。

8. 总结

  • 使用open()函数打开文件,并指定适当的模式(如'r''w''a'等)。
  • 使用read()readline()readlines()等方法读取文件内容。
  • 使用write()方法写入文件内容。
  • 使用close()方法关闭文件,或使用with语句自动关闭文件。
  • 使用try-except语句处理文件操作中可能出现的异常。

通过掌握这些基本操作,你将能够在Python中有效地处理文件,为更复杂的应用打下坚实的基础。