Python进阶1—Python文件基本操作

前面我们以大量例题来掌握了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)

  • 22
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值