1 概述
1.1 案例介绍
在Python中,文件读写是一个基础而重要的操作。Python提供了多种方式来读取和写入文件,包括使用内置的open函数和几种不同的模式。
1.2 适用对象
- 个人开发者
- 高校学生
1.3 案例时间
本案例总时长预计40分钟。
1.4 案例流程
说明: ① 用户开通华为开发者空间,进入云主机; ② 在CodeArts IDE 编写代码进行Python文件读写学习。
1.5 资源总览
本案例预计花费总计0元。 | 资源名称 | 规格 | 单价(元) | 时长(分钟) | |-------------------|------------------------------------------|----------------|------------------| |开发者空间—云主机 |2vCPUs | 4GB X86 CodeArts IDE for Python|免费|40|
2 准备开发环境
2.1 配置云主机并进入
参考“10分钟玩转云主机” 案例介绍中“2.2 申请云主机”章节内容完成华为开发者空间云主机申请与配置,配置云主机建议:“CPU架构”选择“X86”,“操作系统”选择“Ubuntu”。
然后点击“进入桌面”进入云主机。
2.2 使用CodeArts IDE创建工程
参考“初识云主机:CodeArts IDE入门”案例介绍“3.1 新建工程”章节新建工程。 新建的工程包含如下三个目录文件部分: | 目录文件 | 说明 | |-------------------|------------------------------------------| |.arts| CodeArts的配置文件| |venv |虚拟环境| |main.py| 默认生成的入口文件|

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文件。 
Step3:点击右上角“运行”按钮,左边工程目录下出现demo.txt文件并且写入了数据。 
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文件中追加了新内容。
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文件中写入多行数据。

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:点击右上角“运行”按钮,控制台打印出读取的内容。 
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:点击右上角“运行”按钮,控制台打印出读取的内容。
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文件并且写入了数据。
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:点击右上角“运行”按钮,控制台打印出读取的内容。

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文件并且写入了内容。

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:点击右上角“运行”按钮,控制台打印出读取的内容。
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:退出记事本
输入数字1,按下enter键,输入内容:今天开始学习Python文件读写,按下enter键:
输入数字2,按下enter键,控制台显示输入的内容:
输入数字3,退出记事本: 
6万+

被折叠的 条评论
为什么被折叠?



