【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文件、进行文件和目录操作,以及通过异常处理来确保程序的健壮性。

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

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值