在Python中亭引,讀取文件分為三個步驟:
一糟把、打開文件:open
file_handle=open('readme.txt','r')
file_handle
<_io.TextIOWrapper name='readme.txt' mode='r' encoding='cp936'>
文件句柄不是文件,而是對文件的說明乓梨。
二鳖轰、讀取文件:有幾個方法來讀取文件。
- read(n): 從文件中讀取n個字節(jié)扶镀。如果沒有參數(shù)蕴侣,它將讀取整個文件。
- readline(): 返回文件中只有一行的字符串臭觉,包括' \n '作為行結(jié)束標(biāo)記昆雀。當(dāng)它到達(dá)文件末尾時,它返回一個空字符串蝠筑。
- readlines(): 返回一個列表狞膘,其中每個元素都是一個字符串,其中包含來自文件的一行什乙。
使用read()來讀取seqA.fas
file_handle=open('./samples/seqA.fas','r')
file_handle.read()
'>O00626|HUMAN Small inducible cytokine A22.\nMARLQTALLVVLVLLAVALQATEAGPYGANMEDSVCCRDYVRYRLPLRVVKHFYWTSDSCPRPGVVLLTFRDKEICADPRVPWVKMILNKLSQ\n'
三挽封、關(guān)閉文件
- 一旦我們完成了文件,我們使用filehandle.close()關(guān)閉它臣镣。
- 如果不關(guān)閉文件辅愿,當(dāng)程序執(zhí)行完成后python將會關(guān)閉它。
- 不及時關(guān)閉文件會造成資源浪費(fèi)退疫。
- 使用with可以確保文件被關(guān)閉渠缕。
不使用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()
四鸽素、實(shí)例
讀取FASTA文件
with open('./samples/seqA.fas','r') as fh:
print(fh.read())
>O00626|HUMAN Small inducible cytokine A22.
MARLQTALLVVLVLLAVALQATEAGPYGANMEDSVCCRDYVRYRLPLRVVKHFYWTSDSCPRPGVVLLTFRDKEICADPRVPWVKMILNKLSQ
- 將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
- 使用for進(jìn)行遍歷:
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
- 計(jì)算凈電荷
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