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

文章目录

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

🍀引言

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 osfile_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 = nameself.score = scoredef __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:passreturn studentsdef 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("感谢使用学生成绩管理系统!")breakelse:print("无效的选择,请重新输入。")if __name__ == "__main__":main()

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

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

🍀结语

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

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

请添加图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(二)掌握最基本的Linux服务器用法——Linux下简单的C/C++ 程序、项目编译

1、静态库与动态库 静态库(Static Library):静态库是编译后的库文件,其中的代码在编译时被链接到程序中,因此它会与程序一起形成一个独立的可执行文件。每个使用静态库的程序都会有自己的库的副本,这可能会导致内存浪费。常用后缀…

AI 绘画Stable Diffusion 研究(九)sd图生图功能详解-老照片高清修复放大

大家好,我是风雨无阻。 通过前面几篇文章的介绍,相信各位小伙伴,对 Stable Diffusion 这款强大的AI 绘图系统有了全新的认知。我们见识到了借助 Stable Diffusion的文生图功能,利用简单的几个单词,就可以生成完美的图片…

7-3 求给定精度的简单交错序列部分和

分数 15 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 本题要求编写程序,计算序列部分和 1 - 1/4 1/7 - 1/10 ... 直到最后一项的绝对值不大于给定精度eps。 输入格式: 输入在一行中给出一个正实数eps。 输出格式: 在一行中按照“sum S”的格式输出…

.net连接mysql,提示找不到请求的 .Net Framework Data Provider。可能没有安装

开发完成的.net程序需要连接mysql数据库,在个人电脑上运行没问题,别人运行时提示“提示找不到请求的 .Net Framework Data Provider。可能没有安装”。经过查询,安装Connector/NET 8.1.0,下载地址如下所示: https://d…

(分治) 剑指 Offer 16. 数值的整数次方 ——【Leetcode每日一题】

❓剑指 Offer 16. 数值的整数次方 难度:中等 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即, x n x^n xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入:x 2.00000, n …

腾讯云轻量服务器测评:2核 2G 4M

腾讯云轻量2核2G4M服务器,4M带宽下载速度可达512KB/秒,系统盘为50GB SSD盘,300GB月流量,地域节点可选上海、广州和北京,腾讯云百科分享腾讯云2核2G4M轻量应用服务器配置性能表: 目录 腾讯云轻量2核2G4M服…

谈谈网络协议的定义、组成和重要性

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、网络协议的定义 二、网络协议的组成 1、…

Vite更新依赖缓存失败,强制更新依赖缓存

使用vitets开发一段时间了,感觉并不是想象中的好用,特别是出现些稀奇古怪的问题不好解决,比如下面这个问题 上午9:50:08 [vite] error while updating dependencies: Error: ENOENT: no such file or directory, open E:/workspace-dir/node…

常见期权策略类型有哪些?

这几天在做一个期权策略类型的整理分类,怎么解释期权策略,期权策略是现代金融市场中运用非常广泛、变化非常丰富、结构非常精妙的金融衍生产品;同时也是一种更为复杂也更为灵活的投资工具,下文介绍常见期权策略类型有哪些&#xf…

区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序…

【Git】(四)子模块

1、增加子模块 进入准备添加子模块所在的目录,例如library。 git submodule add -b 1.0.0.0 gitgitee.com:sunriver2000/SubModule.git参数-b用于指定子模块分支。 2、更新子模块 git submodule update --progress --init --recursive --force --remote -- "…

[Go版]算法通关村第十一关白银——位运算的高频算法题

目录 专题1:位移的妙用题目:位1的个数(也被称为汉明重量)解法1:遍历所有位,判断每个位的数字是否是1Go代码 解法2:依次消除每个1的位 numnum&(num-1)Go代码 题目:比特位计数思路…

【数据结构】树和二叉树的概念及结构

1.树概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点&#…

迅捷视频工具箱:多功能音视频处理软件

这是一款以视频剪辑、视频转换、屏幕录像等特色功能为主,同时附带有视频压缩、视频分割、视频合并等常用视频处理功能为主的视频编辑软件。该软件操作简单易用,即使没有视频处理经验的用户也可以轻松上手。将视频添加到工具箱对应功能后,简单…

腾讯云3年轻量应用服务器2核4G5M和2核2G4M详细介绍

腾讯云轻量应用服务器3年配置,目前可以选择三年的轻量配置为2核2G4M和2核4G5M,2核2G4M和2核4G5M带宽,当然也可以选择选一年,第二年xufei会比较gui,腾讯云百科分享腾讯云轻量应用服务器3年配置表: 目录 腾…

javaScript:数组检测

目录 一.前言 二.数组检测方法 1.every() 2.some() 3.filter() 一.前言 数组检测是指在编程中对数组进行验证和检查的过程。数组检测可以涉及以下方面: 确定数组的存在:在使用数…

C++线程库

C线程库是C11新增的重要的技术之一,接下来来简单学习一下吧! thread类常用接口 函数名功能thread()构造一个线程对象,没有关联任何线程函数,即没有启动任何线程。thread(fn, args1, args2, ...)构造一个线程对象,并…

01.在实战中提升自己----表达式解析

1.我们面临的问题与挑战 我的工作成功就是交付可用产品,而且是要满足超大规模企业应用的产品。在实践过程中,不管我们是处于哪个阶段,交付的内容就是会大规模应用的工具。在我们的面前,要不提供完善的支持配套,要不投…

VS2022如何显示Class View窗口

点击菜单栏的“视图”选项 > “类视图”,即可打开Class View。

Docker 网络

目录 1.Docker 网络实现原理 一、四种网络模式 1.3Bridge模式(默认) 1.4 None模式(躺平) 二、自定义网络 2.1 查看网络模式列表 三.资源控制 1.CPU 资源控制 2.设置CPU使用率上限 3.进行CPU压力测试 4.设置…