首页 技术 正文
技术 2022年11月19日
0 收藏 410 点赞 4,339 浏览 2006 个字

经过上几章的学习,完成如下任务:读取一个文本文件里的内容,将每一行的内容按“:”分割成两部分,根据分割出第一项判断并分别放入两个列表里,去除首尾空白,在屏幕上打印。

# 两个列表用于存储数据
man=[]
other=[]
try:
data=open("demo.txt", encoding="utf-8")  #文件里的内容类似“man:hello。\n woman:hello.\n man:how are you. \n woman:yes.”如果有中文别忘了编码这个大坑
for each_line in data:  #循环读取
try:
(role, line_spoken)=each_line.split(":", 1)  #分割出的内容存放在元组里,元组是不可变的
line_spoken=line_spoken.strip()         #去除首尾空白(跟c#不一样啊)
if role=="man":
man.append(line_spoken)            #在末尾添加内容
else:
other.append(line_spoken)
except ValueError:
pass
except IOError:
print("IOError")
finally:  #这一段的代码是即使上面发生了异常也会执行
  data.close()
print(man)
print(other)

这算是复习前面的内容,根据前面的学习,你能做出来吗(我除了strip去空白外都完成了,其实很多语言大体是相通的,所以有一门语言的基础,学习那一系的语言都不会太难(c#和python都算是c系的吧))

接下来介绍以写入模式打开文件,上一篇文章已经介绍了open的参数传入“w”就可以写入文件。然后是print,既可以向屏幕输出文本,也可以向文件写入文本,只要传入参数file=out即可以把字符串传入文本

下面我们来实验一下吧:

# 还记得吗w是如果文件存在就会清除原有内容,所以用+表示更新文本而不清除原有内容
out=open("demo.txt", "w+")
print("write something in file", file=out)
out.close()
# 关闭非常重要,一定要关闭文件以确保数据被保存至文件。

那么我们继续,想上面的生成的两个列表分别保存值两个文件里

    manout=open("manout.txt", "w")
for line in man:
print(line, file=manout)
otherout=open("otherout.txt", "w")
for line in other:
print(line, file=otherout)
manout.close()
otherout.close()

将这一段加入到上面的代码的最后。执行后创建了两个新文件并写入了读取来的内容。注意把关闭文件的代码放到finally里面去。

那么问题来了:学挖掘机哦不,是关闭文件每次都要写,挺麻烦的也没有其他方法呢,c#里有using可以释放资源,python里也有:with

with open("manout.txt", "w") as manout:
for line in man:
print(line, file=manout)
with open("otherout.txt", "w") as otherout:
for line in other:
print(line, file=otherout)

这一段代码等价于上一段,而不需要你在写额外的关闭代码。那么,你能把最上面的那一段读取的代码也改掉吗?

腌制数据

听起来有点怪,我查了一下词典,pickle还真是腌制的意思。

python里有一个库叫pickle,可以用于保存和加载然后python数据对象,比如列表。

pickle是以二进制方式保存的,所以保存的文件就不能打开查看了。他提供了两个函数:dump()和load()用于保存和恢复数据。让我们改写上面的代码

# 使用前要导入pickle库
import pickle
  #pickle要求以二进制方式打开文件
with open("manout.txt", "wb") as manout:
pickle.dump(man, manout)
with open("otherout.txt", "wb") as otherout:
pickle.dump(other, otherout)
  #加载数据
  with open("manout.txt", "rb", encoding="utf-8") as manread:
    data = pickle.load(manread)

现在你已经把数据保存到“数据库”里了,那么第四章持久存储就介绍到这里

1.用strip去除空白

2.给open函数出入“w”写入文件

3.使用with自动关闭文件

4.使用pickle库的dump()和load()保存和恢复数据

你看,其实python也不难嘛。

上一篇: Visual Basic了解
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,489
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,904
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,737
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,489
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,128
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,290