Python 轻松学会写程式笔记-第4节52-读取档案

最终程序

# 读取档案

data = []
with open('food.txt', 'r') as f:
	for line in f:
		data.append(line.strip())

print(data)

在这里插入图片描述

写一个文件来给读取

我们先在桌面建立一个资料夹 叫做read 就是读取的意思
我现在只是为了要做一个档案 来让我们的程式读取而已 这样我们等一下才有东西可以读嘛
这个资料夹现在是空的
我们先到Sublime这边呢 来写一个档案
裡面装著pasta 就是义大利麵 跟ramen 也就是拉麵
那我存档
那这两个都是食物嘛 食物的话就叫food好了
food.txt
.txt就是文字档的意思
存档

读取档案的程序

那我们准备可以开始写我们的这个程式码 来读这个档案了

with open('food.txt', 'r') as f:
	for line in f:

好 我就直接先写出来了
with open
那我们要读的档案是food.txt
那我给它一个r
字串 as f 冒号

for line in f 冒号
原则上呢只要你们要读取档案
你们就要很快的写出这两行

它是一个比较语法的东西 要背起来

解释

open就是很明显嘛 打开档案嘛

那 当然要给一个档名啊 food.txt 这没问题

逗点之后 有一个r
这个r是什么东西 如果让大家猜 大家应该也猜得出来
read
读取模式的意思

那有读取模式 就有写入模式
write

他们分别的代号是
r跟w
读取模式跟写入模式

现在因为我们要读取档案 所以我用r 读取模式

那最后这个as f是什么意思
这个是最难理解的
as在英文上啊
就是当作

当作f
这是我取的
我可以写别的东西
可是我通常都取成f 就file 档案的意思
当作f
就是file 档案的意思

当作是一种简称
所以 我前面打开了一个档案
写得很複杂
打开了这个档案之后呢
在程式码裡面
我把这个档案
当作f

那么只要我们的程式码裡面
要用到这个档案
我就只要写f就好了

例如这边 我有用到这个档案 我就写f就好
因为 我们已经先写了当作f 写法就是as f
我把这个档案当作f
从此以后
我只要需要用到这个档案的部分
我就写成f就好了

它只是一种简称

好 那with这行解决之后
我写了一个for loop for迴圈
我们要用for迴圈来读取档案
读取f这个档案
我把档案当作了f
所以for line in f
每一行
我取名为line

这是我自己取的 你可以取别的
它档案一行一行的读嘛 每一行我把它取名叫做line
所以我用一个for loop来 一行一行的读这个档案
那 我就把每一行印出来好了

		print(line)

print line
我把它读到的每一行
给印到萤幕上来
存档

在这里插入图片描述

执行

好 执行
印出pasta跟ramen

对比

我们打开一下我的档案 裡面有pasta跟ramen
可是你这样比对一下 怎么长得不太一样
左边我们印到cmd
在这里插入图片描述
怎么多了一个空行
原因是因为我们当时在写这个food档的时候 你记不记得我们有按enter换行
我们偷偷按了enter换行

那每一次我按enter啊
其实记事本呢就存了一个符号
换行的符号进去这个档案
来记录你在这个地方换行

那个换行的符号就是倒斜线n
\n=换行符号

所以呢当我们读取档案的时候
有读到那个换行的符号表示要换行
然后print本身又会换行

所以变成说
print本身会换行
line的结尾又有换行符号 导致换行
就 换行 换行
所以就变成说pasta这边换行
这边又换行
多了一个空行

我怎么证明给你看

把读到的资料装进清单

在with的上面 我写一个data的空清单
那每一行呢 我把它加进data裡面 append进去
我把line 档案中的每一行 append进去data清单裡面
那读取完这个档案呢 我就把data印出来
看看这个清单到底装了什么
在这里插入图片描述

执行

存档
好 执行

执行结果
pasta这边存了换行符号
倒斜线n 这个就是换行符号
ramen这边为什么没有 因为我当时写完ramen 我没有再换行了
我只有pasta这个地方我有换行而已 ramen这个结尾我没有按enter 所以就没有

我们要怎么

strip()去掉换行符号

这是一个重点
我们通常不想要读取换行符号 进来我们的资料裡面

		data.append(line.strip())

在line这边呢 写.strip
.strip
strip这个功能就是把
换行符号去掉
跟多馀的空格

如果那一行的前后有多馀的空格 它也会去掉
结尾如果有倒斜线n 换行的符号 它也会去掉
这就是strip的功能

那strip是一个只能对字串做的功能
line是一个字串嘛 所以它才可以写.strip
如果今天line是整数 那当然不能.strip啊

就仿彿好像 .append 只能对清单做一样
data是清单嘛 所以它才可以写.append
line是字串嘛 所以它才可以写.strip 来进行这个除掉换行符号的功能

好 所以我们现在就是先对line 做strip的功能
把换行符号去掉之后 我们才装进data清单

在这里插入图片描述

执行

好 存档
再执行一次
在这里插入图片描述
应该不会有换行符号囉 因为我们加了那个.strip
成功 倒斜线n不见了
你看上面 原本有倒斜线n 换行符号 现在没有了 就是因为我们加了这个.strip的功能
这个功能还蛮常用的 尤其是在档案读取的部分 几乎永远都会用这个功能 每一行都会把换行符号去掉 我们才会把资料收集起来

好 那最后我稍微跟你解释一下

这个with到底是什么

这个稍微有一点进阶一点 你听听就好
open是打开档案嘛
那过去在写程式裡面 我们一个程式要去打开档案 你可以想像我们的程式去电脑裡面
夹住那个档案 就是open的部分 夹住 这个程式被它佔用了 那我们读取完我们要的资料之后呢 我们就要close 鬆开那个夹子 别人才可以用
那过去很多人会觉得 写这个close很麻烦 或是忘记 你忘记 如果你的程式遇到一些错误啊 导致中断 那这个档案可能会损毁等等 别的程式用不了 因为那个夹子卡住 会有这种问题
那Python呢 因为是一个比较简化的程式语言
那Python就设计了这个with Python独有的功能 来让它自动close

with=自动close
只要我们的程式码 离开with的架构 譬如说走到第八行这边 这个档案就自动close了
所以它是一个自动close的功能 这个with

什么叫做离开with的架构
你有没有看到 第五行跟第六行 这两行在with的裡面嘛 它都空进去嘛
所以只有在这裡面的部分 这个档案是打开的状态
那如果我一离开 我走到第七行 我离开了这个with 就 档案就close 自动close

走到第八行的时候
这个f这个档案 我们把这个档案当作f
f在第八行的时候 已经是close的状态了 关掉
我在这边已经不能做档案读取了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值