Python文件操作与输入输出:从基础到高级应用

news2025/1/18 1:44:00

文章目录

  • 🍀引言
  • 🍀文件操作基础
  • 🍀上下文管理器与文件自动关闭
  • 🍀文件的迭代与逐行读取
  • 🍀文件的其他常见操作
  • 🍀输入输出基础
  • 🍀 文件输入输出
  • 🍀格式化输出
  • 🍀高级文件操作
  • 🍀学生管理系统案例
  • 🍀结语

🍀引言

Python作为一门功能强大且易于学习的编程语言,在文件操作和输入输出方面提供了丰富的功能和工具。本文将从基础知识开始,逐步深入探讨Python中的文件操作和输入输出技术,帮助读者在编程过程中更好地利用这些功能。


🍀文件操作基础

在Python中,文件操作是一项重要的任务。我们首先要了解如何打开、读取和写入文件。

  • 打开文件:
    使用open()函数可以打开一个文件,并返回一个文件对象。你可以指定文件路径、文件名以及打开模式(读取、写入等)。
file_path = 'example.txt'
file = open(file_path, 'r')  # 以只读模式打开文件
  • 读取文件内容:
    通过文件对象的read()方法可以读取文件的内容。你可以一次性读取整个文件,也可以逐行读取。
content = file.read()  # 读取整个文件内容
  • 写入文件内容
    使用文件对象的write()方法可以将数据写入文件。需要注意的是,写入操作默认会覆盖文件原有内容,如果要追加内容,可以使用追加模式。
output_file = open('output.txt', 'w')  # 以写入模式打开文件
output_file.write("Hello, world!")

🍀上下文管理器与文件自动关闭

Python引入了上下文管理器,让文件操作更加便捷。通过with语句打开文件,当代码块执行完毕后,文件会自动关闭,避免了手动关闭文件可能引发的问题。

with open('example.txt', 'r') as file:
    content = file.read()
# 文件会在代码块执行完毕后自动关闭

🍀文件的迭代与逐行读取

Python允许你将文件对象当作迭代器来使用,逐行读取文件内容

with open('example.txt', 'r') as file:
    for line in file:
        print(line)

🍀文件的其他常见操作

除了基本的读写操作,还有其他有用的文件操作方法,比如获取文件大小、判断文件是否存在等。

import os

file_size = os.path.getsize('example.txt')  # 获取文件大小
file_exists = os.path.exists('example.txt')  # 判断文件是否存在

🍀输入输出基础

在Python中,通过标准输入和标准输出可以进行基本的输入和输出操作。

  • 标准输入:
    使用input()函数可以从标准输入获取用户输入的内容。
name = input("请输入你的名字:")
print("你好,", name)
  • 标准输出:
    使用print()函数可以将内容输出到标准输出。
print("Hello, world!")

🍀 文件输入输出

with open('output.txt', 'w') as file:
    file.write("Hello, world!")

🍀格式化输出

使用格式化字符串,你可以将变量的值插入到输出文本中。

age = 25
print("我今年{}岁。".format(age))

🍀高级文件操作

Python的标准库和第三方库提供了更多高级的文件操作功能,例如处理CSV、JSON、XML等格式的文件,以及在网络上下载文件等

🍀学生管理系统案例

功能要求:

添加学生姓名和成绩。
显示所有学生的姓名和成绩。
将学生信息保存到文件。
从文件中加载学生信息。
class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def __str__(self):
        return f"姓名: {self.name}, 成绩: {self.score}"


def add_student(students):
    name = input("请输入学生姓名: ")
    score = float(input("请输入学生成绩: "))
    student = Student(name, score)
    students.append(student)
    print("学生信息已添加。")


def display_students(students):
    print("学生信息:")
    for student in students:
        print(student)


def save_to_file(students, file_path):
    with open(file_path, 'w') as file:
        for student in students:
            file.write(f"{student.name},{student.score}\n")
    print("学生信息已保存。")


def load_from_file(file_path):
    students = []
    try:
        with open(file_path, 'r') as file:
            for line in file:
                name, score = line.strip().split(',')
                students.append(Student(name, float(score)))
    except FileNotFoundError:
        pass
    return students


def main():
    students = load_from_file('students.txt')
    while True:
        print("\n学生成绩管理系统")
        print("1. 添加学生信息")
        print("2. 显示学生信息")
        print("3. 保存学生信息到文件")
        print("4. 退出")
        choice = input("请选择操作:")
        
        if choice == '1':
            add_student(students)
        elif choice == '2':
            display_students(students)
        elif choice == '3':
            save_to_file(students, 'students.txt')
        elif choice == '4':
            print("感谢使用学生成绩管理系统!")
            break
        else:
            print("无效的选择,请重新输入。")


if __name__ == "__main__":
    main()

运行结果如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这个案例实现了一个简单的学生成绩管理系统,你可以根据提示选择不同的操作。通过输入和输出,你可以添加学生信息、显示学生信息、保存学生信息到文件,并从文件加载学生信息。这个案例综合应用了前面介绍的文件操作、输入输出以及类的概念。
在运行案例时,你可以输入学生的姓名和成绩,然后选择显示学生信息、保存信息到文件或退出系统。学生信息会被保存到文件中,下次运行程序时可以加载之前保存的信息。
通过这个案例,你可以更好地理解文件操作和输入输出在实际项目中的应用,同时也加深对类和对象的理解。你可以根据这个案例的基础上进行拓展,添加更多功能,如成绩统计、成绩排序等。

🍀结语

文件操作和输入输出是Python编程中不可或缺的一部分。本文介绍了文件操作的基本方法,以及如何使用上下文管理器来确保文件的正确关闭。此外,我们还探讨了输入输出的基本方法和格式化输出。通过掌握这些基础知识,你将能够更自如地处理文件和数据输入输出,为你的Python编程之旅奠定坚实的基础。

无论是处理文本文件、日志文件,还是与用户进行交互,Python的文件操作和输入输出功能都将伴随着你的编程旅程,为你提供强大的支持。在掌握了这些基础之后,你还可以深入学习更多高级的文件处理技术,为你的项目开发带来更多可能性。

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/884882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6---列表

一、有序列表 在文本前面添加数字英文句点(.)空格可以构成有序列表。如下表,最终生成的列表前面的编号和前面的数字没有绝对关系,总是从第一个数字开始依次增加。(和C的枚举有一点点类似) 注意:…

解决keep-alive缓存失效问题【必看!!!】

最近正在使用Vue3TsPinia重构后台管理项目&#xff0c;在写到路由缓存时&#xff0c;发现怎么都缓存不了&#xff0c;后来才找到了原因&#xff1a; Vue3中的setup语法糖中的name命名无效 即&#xff1a;如果你是按如下写组件的name&#xff0c;是不起作用的 <script nam…

ARM-M0内核MCU,内置24bit ADC,采样率4KSPS,传感器、电子秤、体脂秤专用,国产IC

ARM-M0内核MCU 内置24bit ADC &#xff0c;采样率4KSPS flash 64KB&#xff0c;SRAM 32KB 适用于传感器&#xff0c;电子秤&#xff0c;体脂秤等等

报名开启 | 2023RflySim暑期学校 : 基于RflySim平台飞控底层算法开发专题培训(第二期)

飞思实验室“基于RflySim平台飞控底层算法开发”系列专题培训第二期开启报名了&#xff01;专题培训由戴训华副教授以及飞思实验室学生&工程师团队主讲&#xff0c;采用“线上线下”集中授课形式&#xff0c;培训时间为8月28日-9月3日&#xff1b;课程内容以RflySim平台介绍…

vite+vue3初始化项目

node环境 14.18&#xff0c;16。最好是16 初始化项目 执行 npm create vuelatest 就是基于vite的命令&#xff0c;执行后会出现以下选择&#xff1a; 目录结构介绍 基本和vue2一个意思 vite.config.js文件如同vue2中的vue.config.js文件&#xff0c;用于配置项目的 安装…

C语言入门 Day_5 四则运算

目录 前言 1.四则运算 2.其他运算 3.易错点 4.思维导图 前言 图为世界上第一台通用计算机ENIAC,于1946年2月14日在美国宾夕法尼亚大学诞生。发明人是美国人莫克利&#xff08;JohnW.Mauchly&#xff09;和艾克特&#xff08;J.PresperEckert&#xff09;。 计算机的最开始…

应用在汽车前照灯系统中的环境光传感芯片

为了保证行车照明的安全性和方便性&#xff0c;减轻驾驶员的劳动强度。近年来&#xff0c;出现了许多新的照明控制系统&#xff0c;例如用于日间驾驶的自动照明系统、光束调节系统、延迟控制等。尤其是汽车自适应前照灯系统&#xff0c;它是一种能够自动改变两种以上的光型以适…

驱动压力P阀10Ω/流量Q阀40Ω比例阀放大器

模块式比例放大器用于控制比例压力流量阀&#xff0c;可驱动PQ比例阀或驱动两路独立控制比例阀&#xff0c;数码管显示现场可设置不同参数&#xff0c;带故障报警提示&#xff0c;DIN35mm导轨安装&#xff0c;24VDC供电&#xff1b;输入指令信号可选0-5V&#xff0c;0-10V&…

线切割数控系统 CAM 功能开发

在第三章我们完成了 Windows CE 系统的的内核定制与软件移植&#xff0c;本实验室开 发的 CAWEP 软件实现了从图形绘制、编辑到运动仿真、代码输出等功能&#xff0c;并未真 正意义上实现线切割机床的控制&#xff0c;本章我们在已有软件的基础上&#xff0c;进行研究与开…

DFT笔记 DC/AC mode与Func

DFT scan可以分为DC和AC两种&#xff0c;区别如下图 DC模式需要ate测试机台提供test clock时钟&#xff08;最快100M&#xff09;&#xff0c;DFT工程师需要升级普通reg变成带si和so&#xff0c;se pin的reg&#xff0c;并插入扫描链&#xff08;scan chain&#xff09;&#x…

系统组件化接口设计

1. 定义这里的系统是指对于一个大系统(如供应链系统)来说划分成的若干小的项目包(如销售管理、采购管理、生产管理)。系统间的接口要讨论的是有关项目包间如何传递数据、数据传递的方式、接口程序及调用方式等问题。2. 原则 保持各项目包间的高度独立性,包括设计的独…

使用wxPython嵌入浏览器加载本地HTML文件

使用wxPython模块嵌入浏览器并加载本地HTML文件的示例博客。以下是一个简单的示例&#xff1a; 介绍&#xff1a; 在本篇博客中&#xff0c;我们将使用Python的wxPython模块来嵌入一个浏览器&#xff0c;并加载一个本地的HTML文件。这对于需要在Python应用程序中显示Web内容…

Visual Studio 2022 中解决使用scanf报错的方法(一劳永逸)

目录 【前言】 一、scanf报错示例 二、解决使用scanf报错的方法 解决方法1&#xff08;不推荐&#xff09; 解决方法2&#xff08;不推荐&#xff09; 解决方法3&#xff08;强烈推荐&#xff09; 第一步 第二步 第三步 三、效果演示&#xff08;方法三&#xff09; …

EF Core+外键

nuget:Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Tools//这个是反向工程&#xff0c;就是把数据导入到程 1.将数据库各表导入到程式 Scaffold-DbContext Data SourceWAYLIPC;Initial CatalogLabOcr;Persist Security InfoTrue;User IDsa;passw…

加杠杆的股票类型是什么?

加杠杆的股票类型在投资领域有不同的称呼&#xff0c;包括杠杆股票、倍增股票、奇特股票等。这些股票类型都具有共同的特点&#xff0c;即提供给投资者以杠杆交易的机会&#xff0c;可以放大投资的回报。以下是对加杠杆的股票类型的介绍。 1. 杠杆型基金&#xff1a;杠杆型基金…

文件上传第三方存储平台:七牛云对象存储(Java为例)

目录 一、注册账号并创建密钥 二、创建存储空间bucket 三、手动添加文件到存储空间 四、代码中执行上传操作 我发现很多人还不知道对于第三方存储如何在代码中进行使用&#xff0c;而实际开发中很多场景下可能都会遇到。 所以我特别写一篇博客&#xff0c;目的一是方便自己…

idea自动导入包,自动删除包

当我们复制代码时&#xff0c;需要一个个导入包&#xff0c;删除代码时&#xff0c;没有用到的包就没用了&#xff0c;忘记删了就导致代码臃肿了&#xff0c;设置自动导入自动删除包使我们的代码更加简洁。 1、file–>settings 2、找到Auto Import 3、勾选Add unambiguous …

JavaScript实现在线Excel的附件上传与下载

摘要&#xff1a;本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 在本地使用Excel时&#xff0c;经常会有需要在Excel中添加一些附件文件的需求&am…

FOSSASIA Summit 2023 - 开源亚洲行

作者 Ted 致歉&#xff1a;本来这篇博客早就该发出&#xff0c;但是由于前几个月频繁差旅导致精神不佳&#xff0c;再加上后续我又参加了 Linux 基金会 7/27 在瑞士日内瓦举办的 Open Source Congress&#xff0c;以及 7/29-30 台北的 COSCUP23&#xff0c;干脆三篇连发&#x…

HICP实验--MPLS VPN

前置学习 HCIP学习--MPLS_板栗妖怪的博客-CSDN博客 一、实验拓扑 二、实验要求 1、R1与R5MPLS VPN 2、R6与R7MPLS VPN 3、 R7可以访问R2/3/4的环回 三、实验步骤 首先配置IP R1 [r1-GigabitEthernet0/0/0]ip address 192.128.2.1 24 [r1-GigabitEthernet0/0/0]int l 0 [r1-…