零基础上手Python数据分析 (5):Python文件操作 - 轻松读写,数据导入导出不再是难题

在这里插入图片描述

写在前面

回顾一下,前几篇博客我们学习了 Python 的基本语法、数据类型和常用数据结构。 现在,我们已经具备了 Python 编程的基础能力,可以开始学习如何 与外部世界进行数据交互 了。 而 文件操作,就是数据交互的重要桥梁。

在数据分析工作中,数据通常不会直接在程序中生成,而是存储在各种 文件 中,例如 CSV 文件、文本文件、Excel 文件、数据库文件等。 我们需要 从文件中读取数据,才能进行后续的分析和处理。 同样,分析的结果也需要 保存到文件中,以便生成报告、共享数据或进行持久化存储。

Excel 文件操作的局限:手动 vs 自动化

对于 Excel 用户来说,文件操作可能并不陌生。 我们每天都在打开、编辑、保存 Excel 文件。 但 Excel 的文件操作主要依赖 手动操作图形界面,当需要处理 大量文件 或进行 自动化数据处理 时,Excel 就显得力不从心了:

  • 批量文件处理效率低下: 如果要处理成百上千个 Excel 文件,手动一个个打开、复制粘贴,效率极其低下,而且容易出错。
  • 自动化流程难以实现: 虽然 Excel VBA 可以实现一定程度的自动化,但学习成本高,代码复杂,维护困难,难以构建稳定可靠的自动化数据处理流程。
  • 与其他工具集成性差: Excel 文件操作与其他编程语言和数据分析工具的集成性较差,不利于构建更复杂的数据分析系统。

Python 文件操作:高效、自动化、灵活的数据交互

Python 提供了强大的文件操作功能,可以 高效、自动化、灵活 地处理各种文件,尤其在数据分析领域,Python 的文件操作能力更是不可或缺:

  • 代码简洁高效,批量处理文件轻松自如: 使用 Python 代码,几行代码就能实现批量读取、写入、处理多个文件,效率远超手动 Excel 操作。
  • 自动化流程轻松构建: Python 脚本可以方便地实现数据导入、处理、分析、导出的自动化流程,解放重复劳动,提高工作效率。
  • 与数据分析库无缝集成: Python 的 Pandas 等数据分析库可以与文件操作无缝集成,例如直接从 CSV 文件读取数据到 DataFrame,将 DataFrame 数据写入 CSV 文件,数据处理流程更加流畅高效。

🔑 一、文本文件操作:读写纯文本数据

文本文件 是最常见的文件类型之一,它存储的是 纯文本数据,例如 .txt 文件、.log 文件、.ini 配置文件等。 文本文件可以使用任何文本编辑器 (例如记事本、Sublime Text、VS Code 等) 打开和编辑。

1. 打开文件:open() 函数

要操作文件,首先需要 打开文件。 Python 使用内置的 open() 函数来打开文件,并返回一个 文件对象,通过文件对象可以进行后续的读写操作。

open() 函数的基本语法如下:

file_object = open(file_path, mode='r', encoding=None)

参数说明:

  • file_path (必需): 要打开的 文件路径 (字符串)。 可以是相对路径或绝对路径。

    • 相对路径: 相对于当前工作目录的路径。 例如,"data.txt" 表示当前目录下的 data.txt 文件,"data/input.txt" 表示当前目录下的 data 文件夹下的 input.txt 文件。
    • 绝对路径: 从文件系统根目录开始的完整路径。 例如,"C:/Users/YourName/Documents/data.txt" (Windows 系统),"/Users/YourName/Documents/data.txt" (macOS/Linux 系统)。
  • mode (可选,默认为 'r'): 文件打开模式 (字符串),指定文件的打开方式,例如读取、写入、追加等。 常用的模式包括:

    模式 描述
    'r' 读取 (Read):默认模式,只读方式打开文件,文件不存在会报错。
    'w' 写入 (Write):写入方式打开文件,文件存在会 覆盖 原内容,文件不存在会创建新文件。
    'a' 追加 (Append):追加方式打开文件,文件存在会在 末尾追加 内容,文件不存在会创建新文件。
    'r+' 读写 (Read and Write):读写方式打开文件,文件不存在会报错。
    'w+' 读写 (Write and Read):读写方式打开文件,文件存在会 覆盖 原内容,文件不存在会创建新文件。
    'a+' 追加读写 (Append and Read):追加读写方式打开文件,文件存在会在 末尾追加 内容,文件不存在会创建新文件。
    'b' 二进制模式 (Binary Mode):用于打开二进制文件 (例如图片、视频、音频等),需要与其他模式组合使用,例如 'rb' (二进制读取),'wb' (二进制写入)。
    't' 文本模式 (Text Mode):默认模式,用于打开文本文件,可以省略 't'
  • encoding (可选,默认为 None,通常建议设置为 'utf-8'): 文件编码格式 (字符串),指定文件的字符编码方式。 常用的编码格式包括 'utf-8''gbk''ascii' 等。 强烈建议在打开文本文件时指定 encoding='utf-8',以避免中文乱码问题。 UTF-8 是一种通用的字符编码,可以表示世界上大多数语言的字符。

示例:以只读模式打开文本文件

try:
    file = open("my_file.txt", mode='r', encoding='utf-8') # 以只读模式打开 UTF-8 编码的 my_file.txt 文件
    # 文件操作代码将在后续步骤中添加
except FileNotFoundError:
    print("文件未找到,请检查文件路径是否正确。")

⚠️ 重要: 文件操作完成后,务必关闭文件! 打开文件会占用系统资源,如果不及时关闭,可能会导致资源泄漏,甚至数据丢失。 可以使用 file.close() 方法手动关闭文件,或者使用 with open(...) as file: 语句 自动管理文件关闭 (推荐使用 with 语句,更安全方便,后面会详细介绍)。

2. 读取文本文件内容

打开文件后,可以使用文件对象的 读取方法 读取文件内容。 常用的读取方法包括:

  • read(size=-1): 读取整个文件的内容,并返回一个 字符串。 如果指定了 size 参数 (正整数),则最多读取 size 个字符。 如果文件很大,一次性读取全部内容可能会占用大量内存,不适合读取超大文件。

    try:
        file = open("my_file.txt", mode='r', encoding='utf-8')
        content = file.read()  # 读取整个文件内容
        print(content)
    except FileNotFoundError:
        print("文件未找到。")
    finally:
        if 'file' in locals() and file: # 确保 file 变量存在且已赋值,再关闭文件
            file.close()
    
  • readline(size=-1): 读取文件的一行内容 (包括行尾的换行符 \n),并返回一个 字符串。 如果指定了 size 参数 (正整数),则最多读取 size 个字符或读取到行尾。 如果文件指针已到达文件末尾,则返回空字符串 ''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kakaZhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值