【Python学习】文件操作+异常处理

【Python学习】文件操作+异常处理

个人主页:Yang-ai-cao

系列专栏:Python学习

博学而日参省乎己,知明而行无过矣

目录

个人主页:Yang-ai-cao

系列专栏:Python学习

博学而日参省乎己,知明而行无过矣

深感自己知识和能力的有限,欢迎大家对博客进行指正,一起进步!

一、 读写文本文件

读写文本文件

1、读文件

2 、写文件

二、处理CSV文件

处理CSV文件

1、读CSV文件

2、写CSV文件

三、 文件和目录操作

文件和目录操作

1、文件操作

2、目录操作

3、获取文件和目录信息

四、 异常处理

异常处理

1、捕获和处理异常

2、自定义异常

五、复习

以“目录操作”为示例:

1. 创建目录

2. 删除目录

3. 复制文件和目录

3.1 复制文件

3.2 复制目录

4. 删除目录及其内容

5. 获取文件和目录信息

5.1 获取当前工作目录

5.2 列出目录内容

总结

咱们可以高效地进行文件操作,并通过异常处理机制确保程序的健壮性。希望这篇博客对您有所帮助!感谢支持!

深感自己知识和能力的有限,欢迎大家对博客进行指正,一起进步!

让我们开始吧

一、 读写文本文件

读写文本文件

读文件:使用 open() 函数可以一次性读取整个文件内容、逐行读取文件内容或将文件内容读取到一个列表中。写文件:可以选择覆盖文件内容(写入模式 'w')或在文件末尾追加内容(追加模式 'a')。

1、读文件

读取文本文件是一个基本的操作。我们可以使用 `open()` 函数来打开文件,并使用不同的方法读取文件内容。

#示例1:一次性读取整个文件内容

with open('example.txt', 'r') as file:

content = file.read()

print(content)

# 示例2:逐行读取文件内容

with open('example.txt', 'r') as file:

for line in file:

print(line.strip())

# 示例3:读取文件到一个列表中

with open('example.txt', 'r') as file:

lines = file.readlines()

for line in lines:

print(line.strip())

2 、写文件

写入文件时,可以选择覆盖文件内容或在文件末尾追加内容。

# 示例1:覆盖文件内容

with open('example.txt', 'w') as file:

file.write('Hello, World!\n')

# 示例2:在文件末尾追加内容

with open('example.txt', 'a') as file:

file.write('Hello again!\n')

二、处理CSV文件

处理CSV文件

读CSV文件:使用 csv 模块的 csv.reader 可以方便地读取CSV文件,并逐行处理数据。写CSV文件:使用 csv 模块的 csv.writer 可以将数据写入CSV文件,支持写入多行数据。

CSV(Comma-Separated Values)文件是一种常见的数据文件格式。Python的 `csv` 模块提供了处理CSV文件的便捷方法。

1、读CSV文件

# 示例:读取CSV文件并打印每一行

import csv

with open('example.csv', 'r') as file:

reader = csv.reader(file)

for row in reader:

print(row)

2、写CSV文件

# 示例:写入数据到CSV文件

import csv

data = [

['Name', 'Age', 'City'],

['Alice', '30', 'New York'],

['Bob', '25', 'Los Angeles']

]

with open('example.csv', 'w', newline='') as file:

writer = csv.writer(file)

writer.writerows(data)

三、 文件和目录操作

文件和目录操作

文件操作:包括重命名文件和删除文件,使用 os 模块中的 os.rename 和 os.remove 函数。目录操作:包括创建目录、删除目录、复制文件和目录,使用 os 模块中的相关函数。获取文件和目录信息:可以获取当前工作目录和列出目录内容,使用 os.getcwd 和 os.listdir 函数。

Python的 `os` 模块提供了丰富的文件和目录操作功能。

1、文件操作

# 示例:重命名和删除文件

import os

# 重命名文件

os.rename('old_name.txt', 'new_name.txt')

# 删除文件

os.remove('example.txt')

2、目录操作

# 示例:创建、删除目录和复制文件

import os

import shutil

# 创建目录

os.mkdir('new_directory')

# 删除目录

os.rmdir('new_directory')

# 复制文件

shutil.copy('source.txt', 'destination.txt')

# 复制目录

shutil.copytree('source_directory', 'destination_directory')

# 删除目录及其内容

shutil.rmtree('directory_to_delete')

3、获取文件和目录信息

# 示例:获取当前工作目录和列出目录内容

import os

# 获取当前工作目录

current_directory = os.getcwd()

print(f"Current Directory: {current_directory}")

# 列出目录内容

directory_contents = os.listdir(current_directory)

print("Directory Contents:")

for item in directory_contents:

print(item)

四、 异常处理

异常处理

捕获和处理异常:通过 try-except 结构捕获并处理文件操作中可能发生的异常,如 FileNotFoundError 和 PermissionError。自定义异常:定义自定义异常类,以便在特定情况下抛出和处理自定义异常,增强代码的可读性和可维护性。

在文件操作中,异常处理是必不可少的。它可以帮助我们捕获和处理可能发生的异常情况,例如文件不存在、权限不足等。

1、捕获和处理异常

# 示例:处理文件不存在和权限不足的异常

try:#正常走的程序

with open('non_existent_file.txt', 'r') as file:

content = file.read()

except FileNotFoundError:

#错误类型

print("Error: The file does not exist.")

except PermissionError:

#错误类型

print("Error: You do not have permission to read the file.")

except Exception as e:

#错误类型

print(f"An unexpected error occurred: {e}")

2、自定义异常

我们还可以定义自己的异常类型,以便在特定情况下抛出和处理自定义异常。

# 示例:定义和使用自定义异常

class CustomFileError(Exception):

def __init__(self, message):

self.message = message

super().__init__(self.message)

def read_file(file_path):

if not os.path.exists(file_path):

raise CustomFileError(f"The file '{file_path}' does not exist.")

with open(file_path, 'r') as file:

return file.read()

try:

content = read_file('non_existent_file.txt')

except CustomFileError as e:

print(e)

五、复习

以“目录操作”为示例:

1. 创建目录

使用 os.mkdir() 可以创建一个新的目录。如果目录已经存在,会引发一个 FileExistsError。

import os

# 创建一个名为 'new_directory' 的目录

try:

os.mkdir('new_directory')

print("Directory 'new_directory' created successfully")

except FileExistsError:

print("Directory 'new_directory' already exists")

2. 删除目录

使用 os.rmdir() 可以删除一个空目录。如果目录不为空,会引发一个 OSError。

import os

# 删除一个名为 'new_directory' 的目录

try:

os.rmdir('new_directory')

print("Directory 'new_directory' deleted successfully")

except OSError as e:

print(f"Error: {e.strerror}")

3. 复制文件和目录

使用 shutil 模块可以方便地复制文件和目录。

3.1 复制文件

使用 shutil.copy() 可以复制文件。

import shutil

# 复制文件 'source.txt' 到 'destination.txt'

try:

shutil.copy('source.txt', 'destination.txt')

print("File 'source.txt' copied to 'destination.txt' successfully")

except FileNotFoundError:

print("Source file 'source.txt' not found")

3.2 复制目录

使用 shutil.copytree() 可以递归地复制目录及其内容。

import shutil

# 复制目录 'source_directory' 到 'destination_directory'

try:

shutil.copytree('source_directory', 'destination_directory')

print("Directory 'source_directory' copied to 'destination_directory' successfully")

except FileExistsError:

print("Destination directory 'destination_directory' already exists")

except FileNotFoundError:

print("Source directory 'source_directory' not found")

4. 删除目录及其内容

使用 shutil.rmtree() 可以递归地删除目录及其所有内容。

import shutil

# 删除目录 'directory_to_delete' 及其所有内容

try:

shutil.rmtree('directory_to_delete')

print("Directory 'directory_to_delete' and all its contents deleted successfully")

except FileNotFoundError:

print("Directory 'directory_to_delete' not found")

5. 获取文件和目录信息

5.1 获取当前工作目录

使用 os.getcwd() 可以获取当前工作目录的路径。

import os

# 获取当前工作目录

current_directory = os.getcwd()

print(f"Current Directory: {current_directory}")

5.2 列出目录内容

使用 os.listdir() 可以列出指定目录中的所有文件和子目录。

import os

# 列出当前工作目录的内容

directory_contents = os.listdir(current_directory)

print("Directory Contents:")

for item in directory_contents:

print(item)

总结

在Python编程中,文件操作是一个至关重要的任务。本文详细介绍了如何读写文本文件、处理CSV文件、进行文件和目录操作,以及通过异常处理来确保程序的健壮性。

咱们可以高效地进行文件操作,并通过异常处理机制确保程序的健壮性。希望这篇博客对您有所帮助!感谢支持!

相关推荐

福建省建阳市蔡氏大宗祠
亚洲28365

福建省建阳市蔡氏大宗祠

⌛ 09-04 👁️ 7966