个人主页:Yang-ai-cao
系列专栏:Python学习
博学而日参省乎己,知明而行无过矣
目录
深感自己知识和能力的有限,欢迎大家对博客进行指正,一起进步!
咱们可以高效地进行文件操作,并通过异常处理机制确保程序的健壮性。希望这篇博客对您有所帮助!感谢支持!
深感自己知识和能力的有限,欢迎大家对博客进行指正,一起进步!
让我们开始吧
一、 读写文本文件
读写文本文件
- 读文件:使用
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文件、进行文件和目录操作,以及通过异常处理来确保程序的健壮性。