版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
應(yīng)用Python處理生物信息學數(shù)據(jù)和作圖(二)Python文件讀寫(1)為什么要用文件?RAM的特點:讀取速度快,但價格昂貴,斷電后保存在上面的數(shù)據(jù)會自動消失磁盤的特點:讀取速度比RAM慢,但容量大、費用低廉、斷電后可長久保存數(shù)據(jù)普通文件可以看成是一個文件名下的字節(jié)流,把數(shù)據(jù)從文件讀入內(nèi)存,從內(nèi)存向磁盤寫入文件打開文件讀寫一個文件前先要打開它:fileobj=open(filename,
mode)Python文件讀寫(2)打開文件fileobj=open(filename,
mode)fileobj是open()函數(shù)返回的文件對象
filename是文件的字符串名mode指明操作和文件類型操作:r表示讀模式,w表示寫模式(文件不存在則創(chuàng)建,文件存在則清空重寫),a表示追加(若文件存在,在文件末尾追加寫入)、x表示文件不存在時創(chuàng)建新文
件寫入(文件存在則報錯)文件類型:默認為t,t表示以文本文件方式操作,b表示以二進制文件方式操作Python文件讀寫(3)寫入文件>>>protein_sequence='''>NAD
kinaseisoform1[Homosapiens]...MEMEQEKMTMNKELSPDAAAYCCSACHGDETWSYNHPIRGRAKSRSLSASPALGSTKEFRRTRSLHGPCP...VTTFGPKACVLQNPQTIMHIQDPASQRLTWNKSPKSVLVIKKMRDASLLQPFKELCTHLMEENMIVYVEK...KVLEDPAIASDESFGAVKKKFCTFREDYDDISNQIDFIICLGGDGTLLYASSLFQGSVPPVMAFHLGSLG...FLTPFSFENFQSQVTQVIEGNAAVVLRSRLKVRVVKELRGKKTAVHNGLGENGSQAAGLDMDVGKQAMQY...QVLNEVVIDRGPSSYLSNVDVYLDGHLITTVQGDGVIVSTPTGSTAYAAAAGASMIHPNVPAIMITPICP...HSLSFRPIVVPAGVELKIMLSPEARNTAWVSFDGRKRQEIRHGDSISITTSCYPLPSICVRDPVSDWFES...LAQCLHWNVRKKQAHFEEEEEEEEEG'''Python文件讀寫(4)>>>
fout=open("protein_seq",
"wt")>>>
fout.write(protein_sequence)489>>>
fout.close()#或者可以使用print語句>>>
fout=open("protein_seq",
"wt")>>>
print(protein_sequence,
file=fout,
sep="",
end="")>>>
fout.close()sep默認是一個空格,end默認是一個換行符Python文件讀寫(5)數(shù)據(jù)分塊寫入#如果源字符串非常大,可以將文件分塊寫入>>>
fout=open("protein_seqs",
"wt")>>>
size=len(protein_sequences)>>>
offset=0>>>
chunk_size=100>>>
while
True:... if
offset
>
size:...
breakPython文件讀寫(6)fout.write(protein_sequences[offset:offset+chunk_size])offset=offset+chunk_size.........10010010010089>>>
fout.close()Python文件讀寫(7)如果protein_seqs文件已經(jīng)存在,使用x模式可以避免重新寫入文件>>>
fout=open("protein_seqs",
"xt")Traceback
(most
recent
call
last):File
"<stdin>",
line
1,
in
<module>FileExistsError:
[Errno
17]
File
exists:
'protein_seqs'Python文件讀寫(8)可以加入一個異常處理>>>
try:... fout=open("protein_seqs",
"xt")... fout.write(stomp
stomp
stomp)...
except
FileExistsError:... print
("protein_seqs
already
exists!")...protein_seqs
already
exists!Python文件讀寫(9)使用read()讀入文本數(shù)據(jù)>>>
fin=open(”protein_seqs”,
”rt")>>>
protein_sequences=fin.read()>>>
fin.close()>>>
len(protein_sequences)489#read()函數(shù)一次性讀入文件的所有內(nèi)容#若文件很大,比如1GB,則需占用1GB內(nèi)存Python文件讀寫(10)分塊讀取文件>>>
protein_sequences="">>>
fin=open("protein_seqs",
"rt")>>>
chunk=100>>>
while
True:.........fragment=fin.read(chunk)if
notfragment:break...protein_sequences
+=
fragmentPython文件讀寫(11)...>>>
fin.close()>>>
len(protein_sequences)489Python文件讀寫(12)使用readline()分行讀取文件>>>
protein_sequences="">>>
fin=open("protein_seqs",
"rt")>>>
while
True:...............fragment=fin.readline()if
notfragment:break#如果不需要得到完整的文件,下一行可以改成處理這一行文本的代碼
protein_sequences+=fragmentPython文件讀寫(13)...>>>
fin.close()>>>
len(protein_sequences)489Python文件讀寫(14)使用迭代器分行讀取文件>>>
protein_sequences="">>>
fin=open("protein_seqs",
"rt")>>>
for
line
in
fin:...
protein_sequences+=line
#這行可改成其它處理一行序列的代碼...>>>
len(protein_sequences)489Python文件讀寫(15)用readlines()函數(shù)返回單行字符串的列表>>>
fin=open("protein_seqs",
"rt")>>>
lines=fin.readlines()>>>
fin.close()>>>
print(lines)Python文件讀寫(16)['>NADkinaseisoform1[Homosapiens]\n','MEMEQEKMTMNKELSPDAAAYCCSACHGDETWSYNHPIRGRAKSRSLSASPALGSTKEFRRTRSLHGPCP\n','VTTFGPKACVLQNPQTIMHIQDPASQRLTWNKSPKSVLVIKKMRDASLLQPFKELCTHLMEENMIVYVEK\n','KVLEDPAIASDESFGAVKKKFCTFREDYDDISNQIDFIICLGGDGTLLYASSLFQGSVPPVMAFHLGSLG\n','FLTPFSFENFQSQVTQVIEGNAAVVLRSRLKVRVVKELRGKKTAVHNGLGENGSQAAGLDMDVGKQAMQY\n','QVLNEVVIDRGPSSYLSNVDVYLDGHLITTVQGDGVIVSTPTGSTAYAAAAGASMIHPNVPAIMITPICP\n','HSLSFRPIVVPAGVELKIMLSPEARNTAWVSFDGRKRQEIRHGDSISITTSCYPLPSICVRDPVSDWFES\n','LAQCLHWNVRKKQAHFEEEEEEEEEG']Python和正則表達式(1)有些人在碰到問題時,就想:“我知道,我可以使用正則表達式!” 現(xiàn)在,他們就有了兩個問題。(by
Jamie“jwz”Zawinski)正則表達式是一些由字符和特殊符號組成的字符串,它們描述了模式 的重復或者表述多個字符,于是正則表達式能按照某種模式匹配一系 列有相似特征的字符串最簡單的正則表達式:foo->foo,
Python->Python,
abc123->abc123引入特殊符號來定義字符集、匹配子組和重復模式這時正則表達式匹配的是字符集而不是單個的字符串Python和正則表達式(2)表示法描述正則表達式示例literal匹配文本字符串的字面值literalfoore1|re2匹配正則表達式re1或者re2foo|bar.匹配任意字符,\m除外b.b^匹配字符串的起始部分^Dear$匹配字符串的終止部分/bin/*sh$*匹配0次或者多次前面出現(xiàn)的正則表達式[A-Za-z0-9]*+匹配1次或者多次前面出現(xiàn)的正則表達式[a-z]+\.com?匹配0次或者1次前面出現(xiàn)的正則表達式goo?{N}匹配N次前面出現(xiàn)的正則表達式[0-9]{3}{M,N}匹配M~N次前面出現(xiàn)的正則表達式[0-9]{5,9}[...]匹配來自字符集的任意單一字符[aeiou][..x,y..]匹配x~y范圍中的任意單一字符[0-9],[A-Z][a-z][^...]不匹配此字符集出現(xiàn)的任意一個字符,包括某一范圍的字符[^aeiou],[^A-Za-z0-9]Python和正則表達式(3)表示法描述正則表達式示例(...)匹配括號封閉的正則表達式,然后另存為子組([0-9]{3})?,
f(oo|u)bar\d同[0-9],匹配任何十進制數(shù)字(\D匹配任何非數(shù)字,與\d相反)data\d+.txt\w同[A-Za-z0-9_],匹配字母數(shù)字下劃線字符(\W與\w相反)[A-Za-z_]\w+\s同[\n\t\r\v\f],匹配任何空格字符(\S與\s相反)of\sthe\b匹配任何單詞邊界(\B與\b相反)\bThe\b\N匹配已保存的子組Nprice:\16\c匹配特殊字符c,按照字面意義匹配,不匹配特殊含義\*Python和正則表達式(4)Python通過使用re模塊來支持正則表達式函數(shù)/方法描述compile(pattern,
flags=0)使用任何可選標記來編譯正則表達式的模式,然后返回一個正則表達式對象match(pattern,
string,flags=0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省揚州市儀征市2019-2020學年八年級下學期期中物理試題【含答案、解析】
- 2025版圖書館圖書出版資助合同規(guī)范模板3篇
- 2025版二手豪華轎車買賣及保養(yǎng)維修增值合同3篇
- 廣東省韶關(guān)市2024-2025學年八年級上學期期末地理試題(含答案)
- 2025年度木材廠租地合同與生態(tài)補償協(xié)議書4篇
- 2025年代購物品委托合同
- 2025年醫(yī)療信息軟件開發(fā)協(xié)議書
- 2025年學員就業(yè)服務(wù)合作協(xié)議
- 2025年分期付款美食餐飲外賣協(xié)議
- 2025年加盟經(jīng)營合同簽署簽訂
- 2025-2030年中國草莓市場競爭格局及發(fā)展趨勢分析報告
- 奕成玻璃基板先進封裝中試線項目環(huán)評報告表
- 廣西壯族自治區(qū)房屋建筑和市政基礎(chǔ)設(shè)施全過程工程咨詢服務(wù)招標文件范本(2020年版)修訂版
- 人教版八年級英語上冊期末專項復習-完形填空和閱讀理解(含答案)
- 2024新版有限空間作業(yè)安全大培訓
- GB/T 44304-2024精細陶瓷室溫斷裂阻力試驗方法壓痕(IF)法
- 年度董事會工作計劃
- 《退休不褪色余熱亦生輝》學校退休教師歡送會
- 02R112拱頂油罐圖集
- 2021年新教材重慶生物高考真題(含答案解析)
- 酒店協(xié)議價格合同范文(8篇)
評論
0/150
提交評論