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

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

CSV(Comma-Separated Values)文件是一种常见的文本文件,其内容是由逗号分隔的值组成的数据。在编程中,读写CSV文件是一种基础的文件操作。下面将分别介绍在Java中如何读写CSV文件以及异常处理的相关内容。 ### 读取CSV文件 读取CSV文件通常会涉及到文件的打开、读取以及关闭操作。以下是使用Java进行这些操作的基本步骤: 1. 创建`BufferedReader`对象,用于从文件中读取数据。 2. 使用循环和`readLine()`方法逐行读取文件。 3. 对于每一行,可以使用`String.split(",")`方法按逗号分隔符进行分割,得到字符串数组,其中每个元素代表一列数据。 4. 对读取的数据进行处理。 5. 关闭`BufferedReader`对象。 ### 写入CSV文件 写入CSV文件的过程读取类似,但方向相反: 1. 创建`PrintWriter`对象,用于向文件写入数据。 2. 使用循环逐个写入数据,可以使用`print()`和`println()`方法。 3. 对于每个写入操作,数据之间可以添加逗号作为分隔符,每写完一行数据后使用`println()`换行。 4. 关闭`PrintWriter`对象。 ### 异常处理文件操作中,可能会遇到多种异常情况,如文件不存在、没有读写权限等。因此,异常处理是非常重要的一部分。在Java中,可以使用`try-catch`语句块来处理可能发生的异常。 ### 示例代码 ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class CSVFileIO { public static void readCSV(String filePath) { BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(filePath)); String line = null; while ((line = reader.readLine()) != null) { String[] values = line.split(","); // 处理每行的数据 } } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void writeCSV(String filePath, String[][] data) { PrintWriter writer = null; try { writer = new PrintWriter(new FileWriter(filePath)); for (String[] row : data) { for (int i = 0; i < row.length; i++) { writer.print(row[i]); if (i < row.length - 1) { writer.print(","); } } writer.println(); } } catch (IOException e) { e.printStackTrace(); } finally { if (writer != null) { writer.close(); } } } } ``` 在这个示例中,`readCSV`方法展示了如何读取CSV文件,`writeCSV`方法展示了如何写入数据到CSV文件异常处理则是通过`try-catch-finally`块来实现的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值