《笨办法学 python3》系列练习计划——16.读写文件

这篇博客主要介绍了Python3中文件操作的基础练习,包括使用open()函数进行读写文件,强调了close()、read()、readline()、write()等方法的用途。作者通过练习,解释了为何在写入文件时需要指定'w'参数,并展示了如何优化读写脚本,减少重复内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

上一题的加分练习中有让我们查看 file 的帮助文档,虽然 python3 中已经没有 file 这个东西了,不过我们通过 help() 知道了被 open 打开后的这个东西是什么以及它的帮助文档,如果大家有大概看过应该有见过下面的几个方法(函数),请记住它们:

  • close —— 关闭文件。如同编辑器中 文件 -> 保存 的作用。
  • read —— 读取文件内容。可以把结果赋值给一个变量。
  • readline —— 读取文本文件中的一行内容。
  • truncate(size) —— 将文件截断指定 size 字节,size 后的内容将删除请小心使用。
  • writer(something) —— 把 something 写入文件。

本题将练习写入文件 writer 的使用。

加分练习
  1. 如果觉的自己没弄懂的话,就用老办法,个每一行加注释。至少能知道哪一行没懂。
  2. 写一个和 15 题类似的脚本,使用 readargv 读取由 基础练习 所创建的那个文本文件。
  3. 文件中重复的地方太多了,试着用一个 target.write()line1, line2, line3 打印出来,可以使用字符串、格式化字符、转义字符。
  4. 找出为什么我们需要给 open 多赋予一个 w 参数。




我的答案

16.0 基础练习 + 16.1注释
from sys import argv

# 通过解包 argv 获取 脚本名 和将要保存的 文件名
script, filename = argv

# 询问是否继续编辑文件 filename
print("We're going to erase %r" % filename)
print("If you don't want that, hit CTRL-C (^C).")
print("If you do want that, hit RETURN.")
# 等待用户输入是否继续编辑
input("?")

# 如果用户未输入 ctrl-c 则会继续执行
print("Opening the file...")
# 打开文件对象
target = open(filename, 'w')

# 没有指定 truncate() 的大小,所有实际上删除了文件的内容
print("Truncating the file. Goodbye!")
target.truncate()

# 获取三个 input 变量的内容
print("Now I'm going to ask you for three lines.")

line1 = input("line 1: ")
line2 = input("line 2: ")
line3 = input("line 3: ")

# 将内容写入文件(只在内存中,并未写入硬盘)
print("I'm going to write there to the file.")
target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

# 关闭文件,将文件写入硬盘
print("And finally, we close it.")
target.close()

运行以一下脚本
这里写图片描述

可以在脚本所在文件价内发现新建的文档 test.txt 打开后其内容正如我们输入的三行内容。
这里写图片描述

16.2 写一个读取脚本
# 要求用 argv 方式,所有相见载入
from sys import argv

# 解包
script, filename = argv

print("脚本 %r 正在读取文件: %r ..." % (script, filename))

# 打开文件
file_open = open(filename)
# 用 print 打印出读取到的内容
print(file_open.read())

运行一下
这里写图片描述

16.3 优化脚本
# 太罗嗦了 16.3 题优化掉
# target.write(line1)
# target.write("\n")
# target.write(line2)
# target.write("\n")
# target.write(line3)
# target.write("\n")
nl = '\n'
target.write(line1 + nl + line2 + nl + line3 + nl )
16.4 open 为什么多了一个 w 参数

open() 的默认参数是 open(file, 'rt') 也就是读取文本的模式,默认参数可以不用填写。而本题练习是写入文件,因此不适应使用 r 参数,需要指定写入模式,因此需要增加 w 参数。




返回目录

《笨办法学 python3》系列练习计划——目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值