python打开文件_【师兄带你学Python-6】一个大容量菜品架(txt文件读写)

1d5fdc46b7ee829a91d7d4a34b3fbaa5.png

-------代码许愿池-------

不会写Python代码?不用着急,只需关注“i科研App公众号”,后台回复Python+你想要的代码即可许愿(例如:Python+图片批量插入Word并统一尺寸),许愿后有机会获得师兄代写的Python代码,邀请你的好友一起许愿,获得的概率更大哟~

-------学习讨论-------

下载“i科研”App->

在“互动”板块发帖参与讨论

吃火锅的时候,桌子旁一般都会配备一个菜架,桌子上放不下的菜可以放在菜架上,需要吃的时候再拿过来涮,这个菜架相当于一个小仓库。如果把Python里咱们存放变量的空间看作是火锅桌,那么这个菜架就是我们今天要聊的文本文件(.txt)。

cc4d33bbc55f2f5cdfa10e81fb3a732d.png

同学们可能会有个疑问,现在都是office的天下了,用word不香吗?为啥还要用txt文件啊。原因很简单,txt文件是一种最简单的文本文件,学习txt文件的读写,方便大家理解Python对文本文件的处理方式,日后再学处理word文档就会更容易上手。此外,科研中的基因、蛋白序列文件、仪器配置文件、导出为txt的图谱文件等都可以作为文本来处理(文末有对fasta序列文件的统计操作示例)。

5077f336a5ee6db1cba3935abf274123.png

师兄新建了1个文本文件,输入了火锅菜品的信息,下面我们就来用Python读取并处理里面的内容。首先是读取文本文件,我们在这里会用到open()函数。open()一般传入2个参数:文件绝对路径和读取方式。文件绝对路径就是文件的地址加文件名,这里为’D:test.txt’,表示需要打开D盘下面的test.txt文件。打开方式常用的有3种:’r’只读(仅读取),‘w’写入(打开空白文件并写入,如文件不存在则创建,如文件原来有内容自动清空),’a’增添(不清空原有内容,在原有内容的末尾继续写入)。使用open()打开后还需要用close()去关闭,否则在关闭Python前,这个文件都无法再用其他软件编辑了。

所以这里我们用with open()语句来读取文件,这样在读取完文件后会自动关闭该文件。打开文件后还需要读取内容并赋值给变量(示例中赋值给lines)以便后续处理。这里使用readlines()函数,按行读取文本内容,形成列表。

bfc086964213718499d9e69432473dea.png

lines的类型为列表。

8bfae2a433930f32dec9d04c399f2c6a.png

说起列表大家就很熟悉啦,上一讲中已经做了介绍。我们可以使用for循环对列表lines的每一个元素,也就是文本文件中的每一行进行分别处理。

af773b5b6ebdc78b7bd0f2481b781671.png

其中第一行是标题栏,我们统计的时候需要跳过它,可以给lines列表加一个范围[1:]进行过滤。

5d136b583f4cb1b6dd232556444fc147.png

现在每一行都是字符串类型的数据,其中菜品、数量和金额依次隔开,我们可以用split()函数将每一行拆分为含有“菜品、数量、金额”3个元素的列表。

d162c8316253351cd674d32ccf22e7d9.png

下面来盘点一下我们点了哪些菜,仅输出每行第一个元素。

849294ad23e8737b855ab113e02c1bb6.png

一目了然,我们点了5种菜。点这些菜一共花了多少钱呢?我们对每行第三个做个累加。计算思路是:先定义变量m为0(定义整数并赋值),使用int()函数将每行第三个元素“金额”line.split()[2]由字符串类型转换为整数类型以用于运算,然后把每行的金额用+=运算符累加到变量m,最后用print()函数打印m即得。

3566a5e9bc49d003122d0330001a0339.png

最后,我们试着把总金额写回原来的文本文件。用’a’模式打开文件,并用write()函数写入。为了让写入内容另起一行,在写入内容的最前面加上n换行符。

42c6dbb32babc84267f2a81c00cb01f4.png

我们打开test.txt文件看一下最后的结果。

e6bb47bab5dc83eca9c7a4f43570d3e8.png

这样我们就完成了txt文本文件的读取、数据处理和写入,其实Python用起来很简单对不对?下面用这个方法处理一个fasta文件试试~以HSPA1A基因的fasta文件为例。

15c414407c6a48c2dc241f5ea2d40f1e.png

我们可以看到文件第一行是基因信息,之后全是基因序列。我们跳过第一行,统计一下序列中ATCG各有多少。达到这个目的的思路有很多,我们运用目前所学的内容写一段代码,使用2层for循环、if语句和累加进行简单统计。

bde035bc45c9ec36222f03590d44b661.png

首先定义A,T,C,G为整数0,用for循环遍历lines,line为每行的字符串,之后再用一次for循环对line中每一个字符进行遍历,用if语句判断字符l是ATCG中的哪一个,然后就对这个字符数量+1,最后输出ATCG的累加值即可。对于序列文件的处理你还有其他的想法吗,可以试着写段小程序操作一下~

熟练掌握基本的文本文件操作方法,不断尝试用Python去处理身边的科研数据文件,假以时日就可以成为一名数据处理高手哟~多留意身边的数据文件吧。好啦,本期“师兄带你学Python”就到这里,咱们下期不见不散。

教程往期回顾

【师兄带你学Python-1】你会涮火锅吗?​mp.weixin.qq.com
1540d2a4eed45edeb4c53afafa1c33ea.png
【师兄带你学Python-2】老板,来个清汤锅底(安装Python)​mp.weixin.qq.com
67287319adb7983e58050c6bbe2645ff.png
【师兄带你学Python-3】火锅吃得好,餐具少不了​mp.weixin.qq.com
34fa28a0590f8bcda3da4d2a72619b05.png
【师兄带你学Python-4】食材与刀工(变量与数据类型)​mp.weixin.qq.com
1540d2a4eed45edeb4c53afafa1c33ea.png
【师兄带你学Python-5】摆盘齐整的羊肉卷(列表)<赠PDF批量转Word代码>​mp.weixin.qq.com
67287319adb7983e58050c6bbe2645ff.png

http://weixin.qq.com/r/HjmutqPEnv7hrefV92wM (二维码自动识别)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值