Python进阶:Python的文件读写

Python进阶:Python的文件读写

最新案例动态,请查阅Python进阶:Python的文件读写。小伙伴们快来领取华为开发者空间进行实操吧!

1 概述

1.1 案例介绍

在Python中,文件读写是一个基础而重要的操作。Python提供了多种方式来读取和写入文件,包括使用内置的open函数和几种不同的模式。

1.2 适用对象

  • 个人开发者
  • 高校学生

1.3 案例时间

本案例总时长预计40分钟。

1.4 案例流程

image.png

说明:
① 用户开通华为开发者空间,进入云主机;
② 在CodeArts IDE 编写代码进行Python文件读写学习。

1.5 资源总览

本案例预计花费总计0元。

资源名称规格单价(元)时长(分钟)
华为开发者空间-云主机鲲鹏通用计算增强型 kc2 | 4vCPUs | 8G | Ubuntu免费40

2 准备开发环境

2.1 配置云主机并进入

参考“10分钟玩转云主机” 案例介绍中“2.2 申请云主机”章节内容完成华为开发者空间云主机申请与配置,配置云主机建议:“CPU架构”选择“X86”,“操作系统”选择“Ubuntu”。

image.png


然后点击“进入桌面”进入云主机。

image.png

2.2 使用CodeArts IDE创建工程

参考“初识云主机:CodeArts IDE入门”案例介绍“3.1 新建工程”章节新建工程。
新建的工程包含如下三个目录文件部分:

目录文件说明
.artsCodeArts的配置文件
venv虚拟环境
main.py默认生成的入口文件
image.png

3 Python中的文件读写

文件读写是计算机中最常见的IO操作,在Python中进行文件读写操作是一个非常基础且重要的技能,掌握这一技能对于开发高效、可靠的程序至关重要。常见的文件格式有:文本文件、图片文件、音视频文件、数据文件等。

3.1 打开文件

在Python中,使用open函数来打开文件。语法如下:
open(file_name,mode,encoding)

  • file_name是要打开的文件名
  • mode是打开文件的模式,默认为只读模式’r’
  • encoding是编码,默认情况下使用utf-8
    常见的模式包括:
  • ‘r’:默认只读模式
  • ‘w’:写入模式,会覆盖原有内容
  • ‘a’:追加模式,在文件末尾添加内容
  • ‘b’:二进制模式,与其他模式组合使用,如’rb’或’wb’
    实现在开发者空间打开一个文件。首先在开发者空间桌面创建一个demo.txt的文件,然后按照如下代码进行打开文件操作。
    代码示例:
import os file=open("/home/developer/Desktop/demo.txt",'rt+') print(file) 

3.2 写入文件

3.2.1 写入文本

在Python中,使用write函数可以向文件中写入内容:
实践:打开demo.txt文件,写入"hello world 你好世界"。
注意:python是一个依赖于格式的语言,代码需要保持和样例相同的缩进。
Step1:删除“main.py”中原有内容,输入下列代码。
代码示例:

import os if __name__ == '__main__': print(os.getcwd()) #输出 /home/developer/CodeArtsProjects/PythonDemo with open("demo.txt","w",encoding="utf-8") as file: file.write("Hello World\n") file.write("你好世界") 

Step2:点击右上角“运行”按钮之前,左边工程目录下没有demo.txt文件。

image.png

Step3:点击右上角“运行”按钮,左边工程目录下出现demo.txt文件并且写入了数据。

image.png
3.2.2 追加内容

使用‘a’模式可以在文件末尾追加内容:
实践:在demo.txt文件末尾追加内容:“我是新加的内容”
Step1:删除“main.py”中原有内容,输入下列代码。

import os if __name__ == '__main__': print(os.getcwd()) #输出 /home/developer/CodeArtsProjects/PythonDemo with open("demo.txt","a",encoding="utf-8") as file: file.write("\n我是新加的内容") 

Step2:点击右上角“运行”按钮, demo.txt文件中追加了新内容。

image.png
3.2.3 写入多行

使用writelines方法可以一次性写入多行内容:
实践:在demo.txt文件中一次性写入多行内容。
Step1:删除“main.py”中原有内容,输入下列代码。

import os if __name__ == '__main__': print(os.getcwd()) #输出 /home/developer/CodeArtsProjects/PythonDemo lines=['\n我是第一行内容\n','我是第二行内容\n','我是第三行内容\n'] with open("demo.txt","a",encoding="utf-8") as file: file.writelines(lines) 

Step2: 点击右上角“运行”按钮,左边工程目录下的demo.txt文件中写入多行数据。

image.png

3.3 读取文件

3.3.1 读取全部内容

使用read方法可以一次性读取文件的全部内容:
实践:一次性读取demo.txt文件中所有内容。
Step1:删除“main.py”中原有内容,输入下列代码。

if __name__ == '__main__': with open("demo.txt","r",encoding="utf-8") as file: content = file.read() print(content) 

Step2:点击右上角“运行”按钮,控制台打印出读取的内容。

image.png
3.3.2 按行读取

使用readlines方法可以按行读取文件内容:
实践:按行读取demo.txt文件中所有内容。
Step1:删除“main.py”中原有内容,输入下列代码。

if __name__ == '__main__': with open("demo.txt","r",encoding="utf-8") as file: lines = file.readlines() for line in lines: print(line.strip())# 去除换行符 

Step2:点击右上角“运行”按钮,控制台打印出读取的内容。

image.png

3.4 高级库与模块

3.4.1 csv模块
3.4.1.1 写入CSV文件

实践:向demo.csv文件中写入内容。
Step1:删除“main.py”中原有内容,输入下列代码。

import csv if __name__ == '__main__': data = [['姓名', '年龄', '城市'],['张三', 30, '北京'],['李四', 25, '上海']] with open("demo.csv","w",encoding="utf-8") as file: writer = csv.writer(file) writer.writerows(data) 

Step2:点击右上角“运行”按钮,左边工程目录下出现demo.csv文件并且写入了数据。

image.png
3.4.1.2 读取CSV文件

实践:读取demo.csv文件中的内容,在控制台输出内容。
Step1:删除“main.py”中原有内容,输入下列代码。

import csv if __name__ == '__main__': with open("demo.csv","r",encoding="utf-8") as file: reager = csv.reader(file) for row in reager: print(row) 

Step2:点击右上角“运行”按钮,控制台打印出读取的内容。

image.png
3.4.2 json模块
3.4.2.1 写入JSON文件

实践:向data.json文件中写入内容。
Step1:删除“main.py”中原有内容,输入下列代码。

import json if __name__ == '__main__': data = {'name': 'Jack','age': 30,'city': 'Nanjing'} with open("data.json","w",encoding="utf-8") as file: json.dump(data,file,indent=4)# indent用于格式化输出 

Step2:点击右上角“运行”按钮,左边工程目录下出现data.json文件并且写入了内容。

image.png
3.4.2.2 读取JSON文件

实践:读取data.json文件中的内容,在控制台输出内容。
Step1:删除“main.py”中原有内容,输入下列代码。

import json if __name__ == '__main__': with open("data.json","r",encoding="utf-8") as file: data = json.load(file) print(data) 

Step2:点击右上角“运行”按钮,控制台打印出读取的内容。

image.png

3.5 文件读写综合案例

结合上面知识点,完成一个记事本应用的开发,实现一个简单的记事本功能:

  1. 允许用户输入内容并保存至记事本
  2. 读取记事本内容
3.5.1 模块代码实现

代码实现:

def read_file(filename): try: with open(filename, 'r', encoding='utf-8') as file: content = file.read() print("文件内容:") print(content) except FileNotFoundError: print("文件不存在!") def write_file(filename): new_content = input("请输入要保存的内容:") with open(filename, 'a', encoding='utf-8') as file: file.write(new_content + '\n') print("内容已保存!") def main(): filename = 'notes.txt' # 默认文件名 while True: print("\n记事本功能:") print("1. 添加日记") print("2. 查看日记") print("3. 退出记事本") choice = input("请选择操作(1/2/3):") if choice == '1': write_file(filename) elif choice == '2': read_file(filename) elif choice == '3': print("退出记事本。") break else: print("无效的选择,请重新输入!") if __name__ == "__main__": main() 
3.5.2 运行结果验证

点击右上角“运行”按钮,输入数字1:添加日记,数字2:查看日记,数字3:退出记事本

image.png


输入数字1,按下enter键,输入内容:今天开始学习Python文件读写,按下enter键:

image.png


输入数字2,按下enter键,控制台显示输入的内容:

image.png


输入数字3,退出记事本:

image.png

Read more

傅里叶变换 | FFT 与 DFT 原理及算法

注:本文为 “傅里叶变换 | FFT 与 DFT” 相关合辑。 英文引文,机翻未校。 中文引文,略作重排。 图片清晰度受引文原图所限。 如有内容异常,请看原文。 Fast Fourier Transform (FFT) 快速傅里叶变换(FFT) In this section we present several methods for computing the DFT efficiently. In view of the importance of the DFT in various digital signal processing applications, such as linear filtering,

By Ne0inhk
Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案

Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 humanize 的适配 鸿蒙Harmony 深度进阶 - 驾驭多语言复数逻辑算法、实现鸿蒙端中式大额单位感知与极致人性化文本渲染方案 前言 在前文我们掌握了 humanize 进行基础数据转换的方法。但在鸿蒙(OpenHarmony)面向全球市场的布局中,真正的技术挑战往往隐藏在极其琐碎的“语言表达”中。例如:在英文中我们说 1 items 是错误的,必须是 1 item 与 2 items;而在中文环境下,我们虽然没有复数形变,但却有“万、亿”这类独特的四位一级计数逻辑。 一个真正具备“高级感”的鸿蒙应用,不应在数据展示上显得僵硬且带有明显的机器翻译痕迹。 本文将作为 humanize 适配的进阶篇,带你攻克多语言复数(Pluralization)

By Ne0inhk
无中生有——无监督学习的原理、算法与结构发现

无中生有——无监督学习的原理、算法与结构发现

“世界上绝大多数数据都没有标签。 真正的智能,不是在已知答案中选择,而是在混沌中发现秩序。” ——无监督学习的哲学 一、为什么需要无监督学习? 在前七章中,我们系统学习了监督学习(Supervised Learning)的核心范式:给定输入 x\mathbf{x}x 和对应标签 yyy,学习映射 f:x↦yf: \mathbf{x} \mapsto yf:x↦y。无论是线性回归、决策树,还是神经网络,都依赖于标注数据这一稀缺资源。 然而,现实世界的数据绝大多数是未标注的: * 用户浏览日志(只有行为,没有“好/坏”标签); * 医学影像(只有图像,没有诊断结论); * 社交网络(只有连接关系,没有群体划分); * 传感器时序(只有数值流,没有异常标记)

By Ne0inhk
【算法通关指南:算法基础篇】二分答案专题:1.木材加工 2.砍树

【算法通关指南:算法基础篇】二分答案专题:1.木材加工 2.砍树

🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人方向学习者 ❄️个人专栏:《算法通关指南 》 ✨ 永远相信美好的事情即将发生 文章目录 * 前言 * 一、二分答案 * 二、二分答案经典算题 * 2.1 木材加工 * 2.1.1题目 * 2.1.2 算法原理 * 2.1.3 代码 * 2.2 砍树 * 2.2.1 题目 * 2.2.2 算法原理 * 2.2.3 代码 * 总结与每日励志 前言 二分答案是算法竞赛与笔试中极具技巧性的高分解法,核心思路是将复杂求解转化为简洁的二分+判定,

By Ne0inhk