Python学习笔记之小派读诗


aihuafeng66t
克里斯蒂亚诺诺 2024-01-10 16:19:12 64383 赞同 0 反对 0
分类: 资源
Python学习笔记之小派读诗

一、系列缘由

  作为一名运维工程师,也一直有一个学习开发的想法,值此之际,不知道博客的下一期目标在哪里,在这思考和犹豫的间隙想着学习和充实一下自己,学习一下python语言,python随着大数据和人工智能的兴起而日益火爆。边学习边实践的原则学习python,希望自己更上一层楼。我的目标是创建一个自己的网站——太阳站点(sun-site.com),一个自娱自乐的自由空间。

二、学习笔记

1、读写文件

  open() 将会返回一个 file 对象,基本语法格式如下:open(filename, mode)

  • filename:包含了你要访问的文件名称的字符串值。
  • mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
    不同模式打开文件的完全列表:
模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

2、文件对象的方法

#使用示例
#打开一个文件
f = open("/tmp/foo.txt", “r”)
str = f.read()
print(str)
#关闭打开的文件
f.close()

  • f.read()
    为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
  • f.readline()
    f.readline() 会从文件中读取单独的一行。换行符为 ‘\n’。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
  • f.readlines()
    f.readlines() 将返回该文件中包含的所有行。如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。
  • f.write()
    f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。
  • f.tell()
    f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
  • f.seek()
    如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
    seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
    seek(x,1) : 表示从当前位置往后移动x个字符
    seek(-x,2):表示从文件的结尾往前移动x个字符
  • f.close()
    在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。

3、pickle 模块

  python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

三、实践练习

1、实践代码

(base) [root@s186 python]# cat xpds.py 
# -*- coding: UTF-8 -*-
# This is a python program.
import time
'''
这是一段学习python的实践代码,主要目的是加强python文件读写的使用和记忆。
小派读诗的意思是python程序读取诗歌文件内容,也可以更新诗歌清单哦!
'''

while True:
        x = int(input("你是想读诗还是写诗?\n1:读诗\n2:写诗\n3:想玩了\n"))
        if x == 1:
                f = open("/tmp/tangshi.txt","r")
                for line in f:
                        print(line)
                        time.sleep(1)
                f.close()
        elif x == 2:
                f = open("/tmp/tangshi.txt","a+")
                tm = input("请输入七绝诗名:")
                f.write(tm)
                f.write("\n")
                zz = input("请输入作者:")
                f.write("作者:")
                f.write(zz)
                f.write("\n")
                print("-----请输入诗句-----")
                for i in range(4):
                        ts = input()
                        f.write(ts)
                        f.write("\n")
                f.close()
        elif x == 3:
                print("----------再会----------")
                break
        else:
                print("输入错误,请重新选择!")
                continue
 

2、设计说明

  • 创建一个tangshi.txt文件,里面存入一首七言绝句;
  • 定义一个while循环,根据选择持续读诗或者写诗,1读诗,2写诗,3想玩了;
  • 使用if语句执行使用r(读)方式打开文件还是a+(追加方式打开文件);
  • 输入1表示读诗,为了控制读诗速度,引入sleep函数,每读一行暂停1秒钟;
  • 输入2表示写诗,根据诗名、作者、诗句的顺序写入绝句;
  • 输入过输入3,退出程序
  • 输入其他告知输入错误。

3、实验测试

(base) [root@s186 python]# cat /tmp/tangshi.txt 
黄鹤楼送孟浩然之广陵
作者:李白
故人西辞黄鹤楼,
烟花三月下扬州。
孤帆远影碧空尽,
唯见长江天际流。
(base) [root@s186 python]# python xpds.py 
你是想读诗还是写诗?
1:读诗
2:写诗
3:想玩了
1
黄鹤楼送孟浩然之广陵

作者:李白

故人西辞黄鹤楼,

烟花三月下扬州。

孤帆远影碧空尽,

唯见长江天际流。

你是想读诗还是写诗?
1:读诗
2:写诗
3:想玩了
2
请输入七绝诗名:金缕衣
请输入作者:杜秋娘
-----请输入诗句-----
劝君莫惜金缕衣,
劝君惜取少年时。
花开堪折直须折,
莫待无花空折枝。
你是想读诗还是写诗?
1:读诗
2:写诗
3:想玩了
31
输入错误,请重新选择!
你是想读诗还是写诗?
1:读诗
2:写诗
3:想玩了
1
黄鹤楼送孟浩然之广陵

作者:李白

故人西辞黄鹤楼,

烟花三月下扬州。

孤帆远影碧空尽,

唯见长江天际流。

金缕衣

作者:杜秋娘

劝君莫惜金缕衣,

劝君惜取少年时。

花开堪折直须折,

莫待无花空折枝。

你是想读诗还是写诗?
1:读诗
2:写诗
3:想玩了
3
----------再会----------
 

 

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
克里斯蒂亚诺诺L1
粉丝 0 资源 831 + 关注 私信
最近热门资源
国产操作系统环境搭建(内含镜像资源链接和提取码)  89
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD  88
分享几个在日常办公中可以用到的shell脚本  81
以openkylin为例编译安装内核  79
bat脚本生成查看电脑配置\硬件信息  78
常见系统问题及其解决方法  77
分享解决宏碁电脑关机时自动重启的方法  75
统信uosboot区分未挂载导致更新备份失败  69
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作  69
统信uos安装mysql的实例参考  63
最近下载排行榜
国产操作系统环境搭建(内含镜像资源链接和提取码) 0
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD 0
分享几个在日常办公中可以用到的shell脚本 0
以openkylin为例编译安装内核 0
bat脚本生成查看电脑配置\硬件信息 0
常见系统问题及其解决方法 0
分享解决宏碁电脑关机时自动重启的方法 0
统信uosboot区分未挂载导致更新备份失败 0
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作 0
统信uos安装mysql的实例参考 0
作者收入月榜
1

prtyaa 收益401.13元

2

zlj141319 收益237.91元

3

哆啦漫漫喵 收益231.75元

4

IT-feng 收益219.92元

5

1843880570 收益214.2元

6

风晓 收益208.24元

7

777 收益173.17元

8

Fhawking 收益106.6元

9

信创来了 收益106.03元

10

克里斯蒂亚诺诺 收益91.08元

请使用微信扫码

添加我为好友,拉您入交流群!

请使用微信扫一扫!