美文网首页Python学习
【Python生信编程笔记】读取文件

【Python生信编程笔记】读取文件

作者: 生信开荒牛 | 来源:发表于2023-06-11 11:17 被阅读0次

    在Python中,读取文件分为三个步骤:

    一、打开文件:open

    file_handle=open('readme.txt','r')
    
    file_handle
    
    <_io.TextIOWrapper name='readme.txt' mode='r' encoding='cp936'>
    

    文件句柄不是文件,而是对文件的说明。

    二、读取文件:有几个方法来读取文件。

    • read(n): 从文件中读取n个字节。如果没有参数,它将读取整个文件。
    • readline(): 返回文件中只有一行的字符串,包括' \n '作为行结束标记。当它到达文件末尾时,它返回一个空字符串。
    • readlines(): 返回一个列表,其中每个元素都是一个字符串,其中包含来自文件的一行。

    使用read()来读取seqA.fas

    file_handle=open('./samples/seqA.fas','r')
    file_handle.read()
    
    '>O00626|HUMAN Small inducible cytokine A22.\nMARLQTALLVVLVLLAVALQATEAGPYGANMEDSVCCRDYVRYRLPLRVVKHFYWTSDSCPRPGVVLLTFRDKEICADPRVPWVKMILNKLSQ\n'
    

    三、关闭文件

    • 一旦我们完成了文件,我们使用filehandle.close()关闭它。
    • 如果不关闭文件,当程序执行完成后python将会关闭它。
    • 不及时关闭文件会造成资源浪费。
    • 使用with可以确保文件被关闭。

    不使用with

    file_handle=open('readme.txt','r')
    file_handle.read()
    file_handle.close()
    

    使用with

    with open('readme.txt','r') as file_handle:
        file_handle.read()
    

    四、实例

    读取FASTA文件

    with open('./samples/seqA.fas','r') as fh:
        print(fh.read())
    
    >O00626|HUMAN Small inducible cytokine A22.
    MARLQTALLVVLVLLAVALQATEAGPYGANMEDSVCCRDYVRYRLPLRVVKHFYWTSDSCPRPGVVLLTFRDKEICADPRVPWVKMILNKLSQ
    
    1. 将FASTA文件的名字和序列分开
    with open('./samples/seqA.fas','r') as fh:
        my_file=fh.read()
    name=my_file.split('\n')[0][1:]  #去掉>
    sequece=''.join(my_file.split('\n')[1:]) 
    print('The name is : {0}'.format(name))
    print('The sequece is : {0}'.format(sequece))
    
    The name is : O00626|HUMAN Small inducible cytokine A22.
    The sequece is : MARLQTALLVVLVLLAVALQATEAGPYGANMEDSVCCRDYVRYRLPLRVVKHFYWTSDSCPRPGVVLLTFRDKEICADPRVPWVKMILNKLSQ
    
    1. 使用for进行遍历:
    sequce=''
    with open('./samples/seqA.fas','r') as fh:
        name=fh.readline()[1:-1]
        for line in fh:
            sequce+=line.replace('\n','')
    print('The name is : {0}'.format(name))
    print('The sequece is : {0}'.format(sequce))
    
    The name is : O00626|HUMAN Small inducible cytokine A22.
    The sequece is : MARLQTALLVVLVLLAVALQATEAGPYGANMEDSVCCRDYVRYRLPLRVVKHFYWTSDSCPRPGVVLLTFRDKEICADPRVPWVKMILNKLSQ
    
    1. 计算净电荷
    sequence=''
    charge=-0.002
    aa_charge = {'C':-.045, 'D':-.999, 'E':-.998, 'H':.091,
    'K':1, 'R':1, 'Y':-.001}
    with open('./samples/prot.fas') as fh:
        #print(fh.read())
        fh.readline()
        for line in fh:
            #print(line[:-1])
            sequence+=line[:-1].upper()  #去掉\n
    for aa in sequence:
        charge+=aa_charge.get(aa,0)
    print(charge)
    
    3.046999999999999
    

    相关文章

      网友评论

        本文标题:【Python生信编程笔记】读取文件

        本文链接:https://www.haomeiwen.com/subject/jwbxydtx.html