首页 > 编程语言 >Python 如何读取和写入文件

Python 如何读取和写入文件

时间:2024-09-23 18:20:15浏览次数:9  
标签:文件 读取 Python 写入 file txt

Python 如何读取和写入文件

文件操作是编程中常见的任务,几乎所有编程语言都支持文件的读写功能。在 Python 中,文件操作简单直观,适用于从初学者到经验丰富的开发者。无论是处理小型文本文件,还是需要处理大型数据文件,Python 提供了丰富的工具和方法来完成这些任务。

本文将带你了解如何在 Python 中读取和写入文件,解释不同的文件模式,并展示如何使用 Python 提供的内置函数高效地进行文件操作。
在这里插入图片描述

一、文件的基本概念

文件可以看作是存储在硬盘上的数据集合,它有一个文件名和路径。文件可以是文本文件,也可以是二进制文件。文本文件以人类可读的字符存储数据,比如 .txt 文件;而二进制文件存储的是计算机能够识别的二进制数据,如 .jpg 图片文件、.exe 可执行文件等。

在 Python 中,文件操作的核心步骤可以分为以下几步:

  1. 打开文件:使用 open() 函数打开文件。
  2. 读写文件:根据需求,进行文件的读取或写入。
  3. 关闭文件:文件操作完成后,使用 close() 函数关闭文件。

1.1 文件模式

Python 的 open() 函数用于打开文件,它需要两个参数:文件名和文件模式。文件模式决定了文件是以读、写还是其他模式打开。常见的文件模式有:

  • r:以只读模式打开文件。文件必须存在,否则会报错。
  • w:以写模式打开文件。如果文件不存在,会创建新文件;如果文件存在,则会清空文件内容。
  • a:以追加模式打开文件。如果文件不存在,会创建新文件;如果文件存在,数据会追加到文件末尾。
  • b:以二进制模式打开文件。适用于非文本文件(如图片、音频等)。
  • t:以文本模式打开文件(默认值)。
  • r+:以读写模式打开文件,允许读取和写入。

例如,以下是使用 open() 函数以只读模式打开一个文本文件的代码:

file = open('example.txt', 'r')

二、读取文件

Python 提供了几种不同的方式来读取文件内容。根据需求的不同,我们可以一次读取整个文件、一行行读取,或者按字节读取。

2.1 读取整个文件

最简单的读取方式是使用 read() 方法,它会将文件的全部内容作为字符串读取出来:

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)
  • with 语句:推荐使用 with 语句来处理文件操作,它能够确保文件在使用完毕后自动关闭,避免手动调用 file.close()
  • read():一次性读取整个文件内容。

2.2 逐行读取文件

如果文件较大,我们可以选择逐行读取,以节省内存。Python 提供了 readline()readlines() 方法:

  • readline():每次只读取文件中的一行。
  • readlines():读取所有行,并返回一个包含每行内容的列表。
with open('example.txt', 'r') as file:
    for line in file:
        print(line.strip())  # strip() 去除行尾的换行符

这段代码使用 for 循环逐行读取文件内容,并去除每行末尾的换行符。

2.3 读取固定大小的内容

有时我们可能只需要读取文件的一部分内容,可以使用 read(size) 方法来读取指定字节数的数据。

with open('example.txt', 'r') as file:
    chunk = file.read(100)  # 读取文件的前 100 个字符
    print(chunk)

这种方法适用于需要处理较大文件的场景,避免一次性读取整个文件导致内存占用过高。

2.4 读取二进制文件

当处理非文本文件时(如图片、音频等),我们需要以二进制模式打开文件并读取其内容。

with open('image.jpg', 'rb') as file:
    binary_data = file.read()
    print(binary_data)  # 打印二进制数据

在这个例子中,我们以 rb 模式打开文件,表示以二进制读取模式。

三、写入文件

与读取文件类似,Python 也提供了多种方法来写入文件。根据文件模式的不同,写入时可以选择覆盖文件或向文件末尾追加内容。

3.1 写入新文件

使用 w 模式可以创建一个新的文件,或者清空已有文件的内容并重新写入数据。

with open('output.txt', 'w') as file:
    file.write('这是写入文件的一行文本。\n')
    file.write('这是另一行文本。\n')
  • write() 方法:将字符串写入文件。
  • 注意:使用 w 模式时,如果文件已存在,文件内容会被清空。

3.2 追加内容

如果我们希望向已有文件中添加新内容,而不是覆盖现有内容,可以使用 a 模式。

with open('output.txt', 'a') as file:
    file.write('这是追加的一行文本。\n')

这种方式常用于记录日志或保存处理结果。

3.3 写入二进制文件

处理二进制文件时,需要以二进制模式写入。下面是写入二进制数据的示例:

with open('output.bin', 'wb') as file:
    file.write(b'\x00\xFF\x10')  # 写入二进制数据

这里的 b 前缀表示字节序列,即二进制数据。

四、文件的其他操作

除了读取和写入,Python 还提供了许多其他文件操作函数,用于管理文件系统中的文件。

4.1 检查文件是否存在

在进行文件操作之前,通常我们需要确认文件是否存在。可以使用 os.path 模块中的 exists() 函数来检查文件是否存在。

import os

if os.path.exists('example.txt'):
    print('文件存在')
else:
    print('文件不存在')

4.2 删除文件

要删除文件,可以使用 os.remove() 函数:

import os

if os.path.exists('example.txt'):
    os.remove('example.txt')
    print('文件已删除')
else:
    print('文件不存在')

4.3 重命名文件

重命名文件可以使用 os.rename() 函数:

import os

os.rename('old_name.txt', 'new_name.txt')
print('文件已重命名')

4.4 获取文件信息

使用 os.stat() 可以获取文件的详细信息,包括文件大小、创建时间等。

import os

file_info = os.stat('example.txt')
print(f"文件大小: {file_info.st_size} 字节")

五、文件操作中的异常处理

在进行文件操作时,可能会遇到文件不存在、权限不足等错误。为确保程序在异常情况下不会崩溃,通常需要进行异常处理。

try:
    with open('nonexistent_file.txt', 'r') as file:
        content = file.read()
except FileNotFoundError:
    print('文件未找到,请检查文件名和路径。')
except PermissionError:
    print('权限不足,无法访问文件。')

通过 try-except 语句,我们可以捕获文件操作中的常见异常并进行相应处理。

六、总结

在本文中,我们介绍了 Python 中文件的读取和写入方法,详细解释了文件模式、如何处理文本文件和二进制文件,并演示了各种常见的文件操作如追加内容、删除文件、重命名文件等。

通过掌握这些基本的文件操作技能,你可以轻松处理文件数据,无论是记录日志、保存用户数据,还是处理复杂的文件格式。在实际项目中,文件读写是非常常见的操作,理解这些操作的基本概念和应用场景能够帮助你编写更加健壮和灵活的 Python 程序。

标签:文件,读取,Python,写入,file,txt
From: https://blog.csdn.net/chusheng1840/article/details/142465132

相关文章

  • Python装饰器(不带参/带参)
    普通装饰器示例普通装饰器通常用于在不修改函数签名的情况下增强函数功能。#定义一个普通装饰器defmy_decorator(func):defwrapper():print("Somethingishappeningbeforethefunctioniscalled.")func()print("Somethingishappenin......
  • Python学习路线
    一、基础阶段Python基础语法学习内容:变量、数据类型(如整数、浮点数、字符串、布尔等)、运算符、控制流语句(如if-else、for、while等)、函数定义与调用等。学习网站及网址:廖雪峰的Python入门教程:https://www.liaoxuefeng.com/wiki/1016959663602400。廖雪峰老师的教程讲解......
  • python 自动化接口测试
                  ......
  • python获取同花顺涨停连板跌停数据代码可用
    importrequestsimportjsonimportpandasaspdclassths_limitup_data:def__init__(self):'''涨停数据'''defget_var(self):'''获取js'''......
  • 【PAT_Python解】1026 程序运行时间
    原题链接:PTA|程序设计类实验辅助教学平台参考资料:1、【Python】1026程序运行时间(15分)_python运行15分钟-CSDN博客2、Python实现PAT乙级1026程序运行时间_pat1026python-CSDN博客3、python3小数位的四舍五入(用两种方法解决round遇5不进)_python_脚本之家Tips......
  • 【PAT_Python解】1025 反转链表
    原题链接:PTA|程序设计类实验辅助教学平台参考资料:1025反转链表(25分)PAT乙级C++/Python版_1025反转链表分数25作者chen,yue单位浙江大学给定一个常数k以及一个-CSDN博客【Python数据结构】反转链表的方法_反转链表python-CSDN博客Python基础算法——反......
  • python基础
    目录basic 标识符、变量、数据类型 标识符关键字字面量literal变量数据类型字符串str列表list元组tuple集合set字典dict 变量的输入与输出数字类型整型int浮点型float复数类型complex 布尔类型bool数字类型的转换:basic *良好的代码格式可提升代码......
  • Python实战:为Prometheus开发自定义Exporter
    Python实战:为Prometheus开发自定义Exporter在当今的微服务架构和容器化部署环境中,监控系统的重要性不言而喻。Prometheus作为一款开源的系统监控和警报工具,以其强大的功能和灵活性受到了广泛的欢迎。然而,Prometheus本身并不直接监控所有类型的服务或应用,这就需要我们为其开发自定......
  • python 字典的解包、合并
    python字典的解包、合并内容在Python中,可以使用以下方式解包和打包字典:解包字典使用**运算符可以解包字典,将字典中的键值对作为关键字参数传递给函数或构造器。例如:deffunc(a,b,c):print(a,b,c)params={'a':1,'b':2,'c':3}func(**params)#输出:......
  • Python 装饰器:强大的代码增强工具
    在Python中,装饰器是一种非常强大的工具,它可以在不修改原有代码的情况下,为函数、方法或类添加额外的功能。本文将深入探讨Python装饰器的高级用法,展示其在不同场景下的灵活性和强大功能。一、装饰器简介装饰器是一个函数,它接受一个函数作为参数,并返回一个新的函数。这......