[Python for Bioinformatics 2学习笔记]5.1 Handling files: Reading files

写在最前面:

之前磨磨唧唧学习了Python,总觉得缺少练习,自己写起来也是卡卡顿顿还需要这里抄一下那里找一下。最近在读Sebastian Bassi主编的Python for Bioinformatics Second Edition,正好做些学习笔记。笔记上的目录号和书中的是对应的,原书网上可以搜到。然后文中的代码片段我也还没设置的很好,有些Tab可能显示的不对,要是之后我还不会在这个编辑器上编代码的话我就直接截图了。

btw以后这些简单测试代码的编译我都直接用Sublime Text 3的Build功能直接编译啦。

好,下面是正文。

5.1读取文件

Python中的文件读取分为3个过程:

1.打开文件

这一步使用的是Python内置的函数openopen函数返回的是文件的filehandle,中文翻译是文件句柄,文件句柄refer到这个文件,所以filehandle并不是文件本身。

输入:

输出:
<_io.TextIOWrapper name='C:/Users/pengxi/Desktop/report/seq.fa' mode='r' encoding='utf-8'>
[Finished in 0.2s]

open函数的第一个参数是文件的绝对路径,在linux下跑的话可以使用sys里的sys.argv[]来从命令行里读取文件的路径,第二个参数(参数名是mode),r指的是read读取,w指的是write写入,a指的是append添加内容,r+是read and write读写。

2.读取文件

有三个常用方法可以用来读取文件,分别是read(), readline()readlines()
read(n)是读取文件中的前n个字节,如果不设置n,那read()就会读取整个文件。

输入:
print(file_handle.read())
输出:
>whatever sequence
TGCGGGAACCACTCCCTGTATGCCACCCGGTTCATATTCTCCGTCTCGGCCTGCGCCGACATATAAAAATCCCGATTGTTGTCGTGGCCCACATACTTGTGAAAGAGGCGAGGGATGCCCGAGGTGGATCTCTCTTCCGGAACAGAGTTGCGCATGTACCAGTTTGACACCAACTCCATGCCGTCCGGATTGGCGTGCACGGCGAGGAGAACGACATCGTCGAGAAACCGCAGAGTCTCCTCGTCAGTCCGGCTGACCATCTGGTACACCCACTCCATGAGTTGATGGGCACCGAGCACTTCGGTGGCATGCAGACCGCCATCGATCCAGACTGTCGCTTTCCCTTCCTCGGCCAGGGCACGCGCCT
[Finished in 0.2s]

输入:
print(file_handle.read(11))
输出:
>whatever s
[Finished in 0.2s]

readline()只读取一行,末尾还有个换行符\n:
输入:
file_handle = open('C:/Users/pengxi/Desktop/report/seq.fa', "r", encoding="utf-8")
print(file_handle.readline())

输出:
>whatever sequence
TGCGGGAACCACTCCCTGTATGCCACCCGGTTCATATTCTCCGTCTCGGCCTGCGCCGACATATAAAAATCCCGATTGTTGTCGTGGCCCACATACTTGTGAAAGAGGCGAGGGATGCCCGAGGTGGATCTCTCTTCCGGAACAGAGTTGCGCATGTACCAGTTTGACACCAACTCCATGCCGTCCGGATTGGCGTGCACGGCGAGGAGAACGACATCGTCGAGAAACCGCAGAGTCTCCTCGTCAGTCCGGCTGACCATCTGGTACACCCACTCCATGAGTTGATGGGCACCGAGCACTTCGGTGGCATGCAGACCGCCATCGATCCAGACTGTCGCTTTCCCTTCCTCGGCCAGGGCACGCGCCT
[Finished in 0.2s]

readlines()一行一行读取文件,返回一个列表list,每个元素就是一行和后面的换行符。
输入:
file_handle = open('C:/Users/pengxi/Desktop/report/seq.fa', "r", encoding="utf-8")
print(file_handle.readlines())

输出:
['>whatever sequence\n', 'TGCGGGAACCACTCCCTGTATGCCACCCGGTTCATATTCTCCGTCTCGGCCTGCGCCGACATATAAAAATCCCGATTGTTGTCGTGGCCCACATACTTGTGAAAGAGGCGAGGGATGCCCGAGGTGGATCTCTCTTCCGGAACAGAGTTGCGCATGTACCAGTTTGACACCAACTCCATGCCGTCCGGATTGGCGTGCACGGCGAGGAGAACGACATCGTCGAGAAACCGCAGAGTCTCCTCGTCAGTCCGGCTGACCATCTGGTACACCCACTCCATGAGTTGATGGGCACCGAGCACTTCGGTGGCATGCAGACCGCCATCGATCCAGACTGTCGCTTTCCCTTCCTCGGCCAGGGCACGCGCCT']
[Finished in 0.2s]

3.关闭文件:close()用来关闭文件,如果你不关,程序结束后Python就自动关了。平常最好处理后就用close()关了,避免不必要地占用资源。
输入:
file_handle = open('C:/Users/pengxi/Desktop/report/seq.fa', "r", encoding="utf-8")
file_handle.close()

不想用或者总是忘记close的可以用with来打开文件。

Share this page if you like this post:)