前面我们以大量例题来掌握了Python的一些基本语法,现在开始我们来学习Python的一些实际应用。本章将以例题的形式介绍Python有关文件的基本操作。
第1关:写入“沁园春”诗词
任务描述
本关任务:将《沁园春.长沙》写入文本文件cs.txt中。
代码解析
# —*- coding:utf-8 -*-
''' 自定义函数return_values
功能:完成题目要求,不用调用该函数,系统自动检查函数是否正确。'''
def return_values():
########## Begin ##########
#(1)以写方式打开文本文件“cs.txt”,encoding='utf8'
file1 = open("cs.txt","w")
#(2)写入标题行
file1.write("《沁园春.长沙》\n\n")
#(3)写入作者行
file1.write("毛泽东\n\n")
#(4)写入第一句
file1.write("独立寒秋,湘江北去,橘子洲头。\n\n")
#(5)以字符串列表的方式写入所有内容
file1.writelines(["看万山红遍,层林浸染;\n\n","漫江碧透,百舸争流。\n\n","鹰击长空,鱼翔浅底,\n\n","万类霜天竞自由。\n\n","怅寥廓,问苍茫大地,谁主沉浮?\n\n","携来百侣曾游,\n\n","忆往昔峥嵘岁月稠。\n\n","恰同学少年,风华正茂;\n\n","书生意气,挥斥方遒。\n\n","指点江山,激扬文字,\n\n","粪土当年万户侯。\n\n","曾记否,到中流击水,浪遏飞舟?\n\n",])
#(6)关闭文件
file1.close()
########## End ##########
第2关:写偶数
任务描述
本关任务:将1~100区间内的偶数写入文件newf1.txt中。偶数之间以水平制表符分隔,不换行。如下图所示:
代码解析
''' 自定义函数return_values
功能:完成题目要求,不用调用该函数,系统自动检查函数是否正确。'''
def return_values():
########## Begin ##########
# 将1~100区间内的偶数写入文件newf1.txt中。
f = open("newf1.txt","w")
for i in range(2,101,2):
f.write(str(i))
if i != 100:
f.write("\t")
f.close()
########## End ##########
第3关:写读字母表
任务描述
本关任务:
(1)以可读可写方式新建文件letters.txt
(2)往文件中依次写入26个大写字母,每行一个字母
(3)读出并输出前两个字母
测试说明
平台会对你编写的代码进行测试:
测试输入:
预期输出:
A
B
文件内容正确
代码解析
''' 自定义函数return_values
功能:完成题目要求,不用调用该函数,系统自动检查函数是否正确。'''
def return_values():
########## Begin ##########
#(1)以可读可写方式新建文件letters.txt
#(2)往文件中依次写入26个大写字母,每行一个字母
#(3)读出并输出文件中前两个字母
f = open("letters.txt","w+")
for i in range(65,91):
f.write(chr(i))
f.write("\n")
f.seek(0)
print(f.readline().strip())
print(f.readline().strip())
########## End ##########
第4关:文件的合并
任务描述
本关任务:
(1)打开读取已有文本文件qyc.txt
(2)新建并写入文本文件py.txt。内容如下:
“恰同学少年,风华正茂,书生意气,挥斥方遒。”在这峥嵘岁月里,作者和他的同学,正值青春年少,神采飞扬,才华横溢。
“指点江山,激扬文字,粪土当年万户侯。”这是对“峥嵘岁月”的进一步具体化。
(3)将qyc.txt和py.txt文件合并成新的文件scdp.txt,内容如下图:
代码解析
''' 自定义函数return_values
功能:完成题目要求,不用调用该函数,系统自动检查函数是否正确。'''
def return_values():
########## Begin ##########
#(1)打开已有文本文件"qyc.txt",读取所有内容,并添加到列表x中,再关闭文件
a=open("qyc.txt","r",encoding="utf8")
aread = a.read()
lst = []
for i in aread:
lst.append(i)
a.close()
#(2)新建并以写模式打开文本文件"py.txt",写入评语,再关闭文件
file1=open("py.txt","w",encoding="utf8")
file1.writelines(["“恰同学少年,风华正茂,书生意气,挥斥方遒。”在这段峥嵘的岁月里,作者和他的同学,正值青春年少,神采飞扬,才华横溢。\n\n","“指点江山,激扬文字,粪土当年万户侯。”这是对“峥嵘岁月”的进一步具体化。"])
file1.close()
#(3)打开文本文件"py.txt",读取所有内容,并添加到列表x中,再关闭文件
b=open("py.txt","r",encoding="utf8")
bread = b.read()
for j in bread:
lst.append(j)
b.close()
#(4)以写入模式打开文本文件"scdp.txt",将列表x中的元素连接到字符串s,再将字符串s写入文件中,关闭文件。
c=open("scdp.txt","w",encoding="utf8")
s = ""
c.write(s.join(lst))
c.close()
########## End ##########
第5关:csv文件的写入
任务描述
本关任务:编写将内容写入xscj.csv文件中。如下图:
代码解析
''' 自定义函数return_values
功能:完成题目要求,不用调用该函数,系统自动检查函数是否正确。'''
import csv
def return_values():
########## Begin ##########
# 利用csv模块写xscj.csv文件
title = ["学号","姓名","大学语文","大学英语","大学计算机","程序设计应用基础"]
s1 = ["10101","张三","86","79","82","90"]
s2 = ["10102","李四","81","92","98","87"]
s3 = ["10103","王五","78","80","85","83"]
s4 = ["10104","赵六","82","88","96","92"]
f = open("xscj.csv","w")
fcsv = csv.writer(f)
fcsv.writerow(title)
fcsv.writerows([s1,s2,s3,s4])
f.close()
########## End ##########
第6关:csv文件的读取
任务描述
本关任务:读取csv文件的内容,逐行输出显示。
测试说明
平台会对你编写的代码进行测试:
测试输入:
预期输出:
['学号', '姓名', '大学语文', '大学英语', '大学计算机', '程序设计应用基础']
['10101', '张三', '86', '79', '82', '90']
['10102', '李四', '81', '92', '98', '87']
['10103', '王五', '78', '80', '85', '83']
['10104', '赵六', '82', '88', '96', '92']
代码解析
在第5关的基础上随便加点代码:
''' 完善自定义函数return_values功能,程序代码已创建score.csv文件
请补充代码读取该文件的内容,逐行显示输出'''
def return_values():
########## Begin ##########
import csv
title=["学号","姓名","大学语文","大学英语","大学计算机","程序设计应用基础"]
s1=["10101","张三","86","79","82","90"]
s2=["10102","李四","81","92","98","87"]
s3=["10103","王五","78","80","85","83"]
s4=["10104","赵六","82","88","96","92"]
f1=open("score.csv","w",newline="",encoding='utf8') #此方法不会产生空行
f1csv=csv.writer(f1)
f1csv.writerow(title)
f1csv.writerows([s1,s2,s3,s4])
f1.close()
#读取score.csv文件中的内容,逐行显示输出
f2 = open("score.csv","r")
f2csv = csv.reader(f2)
for line in f2csv:
print(line)
f2.close()
########## End ##########
return_values()
第7关:二进制文件读写
任务描述
本关任务:写二进制文件,再读取显示。
测试说明
平台会对你编写的代码进行测试:
测试输入:
预期输出:
b'987654321You are welcome!'
代码解析
我在这里用到了pickle库
import pickle
#以二进制模式写入文件binaryfile.dat中
with open("binaryfile.dat","wb") as f1:
#写字符串
pickle.dump(b"987654321You are welcome!",f1)
#以二进制模式一次性读取binaryfile.dat中的所有内容
with open("binaryfile.dat","rb") as f2:
x = pickle.load(f2)
print(x)