1、開啟檔案獲取檔案物件
2、操作檔案
3、關閉檔案
fr = open("test.txt","r") #開啟檔案ff = fr.read() #讀取檔案所有內容(不建議使用,如果檔案內容巨大,記憶體會爆)print(ff)
檔案型別
r #唯讀,預設模式 開啟資料檔案w #只寫,不可讀,若檔案不存在則建立,若存在,則刪除內容,寫入新內容a #只追加,不可讀,若檔案不存在則建立,存在則追加新內容
檔案方法(不常用)
前三個方法:在大檔案時慎用,會把內容讀到記憶體中,占用大記憶體
檔案的讀入與寫出(常用方法):
檔案的讀入與寫出主要用的是for迴圈:
fr = open("c:/users/administrator/desktop/a/brassica_napus_bnaa01g12430d_sequence.fa","r") #輸入檔案,讀取資料fw = open("c:/users/administrator/desktop/a/out.fa","w") #輸出檔案,寫出結果for line in fr: #迴圈一行一行的讀取檔案 new_line = line.replace("a","t") #把檔案裡的a替換成t fw.write(new_line)fr.close() #關閉檔案fw.close() #關閉檔案
學習任務
編寫指令碼要求:
讀取gff檔案,篩選檔案中1號染色體100000-5000000之間的基因
讀出基因的名字,染色體,起始位置,終止位置資訊用tab分隔各列
fr = open("c:/users/administrator/desktop/a/arabidopsis_thaliana.tair10.46.gff3/arabidopsis_thaliana.tair10.46.gff3","r") fw = open("c:/users/administrator/desktop/a/arabidopsis_thaliana.tair10.46.gff3/out.fa","w") for line in fr: line.strip()#去除每一行自帶的換行符 if line.startswith("#"): #去除含有#的行,這行**也可以寫成if line[0] == "#": continue #如果不想加continue,可以把上一行寫成if not line[0] == "#": tmp = line.split("\t") #gff3檔案本身每一行以tab鍵分割 if tmp[0] == "1" and tmp[2] == "gene" and int(tmp[3]) > 10000 and int(tmp[3]) < 50000: geneid = tmp[8].split(";")[0].split("=")[1].split(":")[1] mystr = tmp[0] + "\t" +tmp[3] + "\t" + tmp[4] + "\t" + geneid fw.write(mystr+"\n") #fw.write(line)fr.close()fw.close()
fr = open("c:/users/administrator/desktop/a/arabidopsis_thaliana.tair10.46.gff3/arabidopsis_thaliana.tair10.46.gff3","r") fw = open("c:/users/administrator/desktop/a/arabidopsis_thaliana.tair10.46.gff3/out.fa","w") for line in fr: line.strip()#去除每一行自帶的換行符 if not line[0] == "#": #去除含有#的行,這行**也可以寫成if line[0] == "#": tmp = line.split("\t") #gff3檔案本身每一行以tab鍵分割 if tmp[0] == "1" and tmp[2] == "gene" and int(tmp[3]) > 10000 and int(tmp[3]) < 50000: geneid = tmp[8].split(";")[0].split("=")[1].split(":")[1] mystr = tmp[0] + "\t" +tmp[3] + "\t" + tmp[4] + "\t" + geneid fw.write(mystr+"\n") #fw.write(line)fr.close()fw.close()
fr = open("c:/users/administrator/desktop/a/arabidopsis_thaliana.tair10.46.gff3/arabidopsis_thaliana.tair10.46.gff3","r") fw = open("c:/users/administrator/desktop/a/arabidopsis_thaliana.tair10.46.gff3/out.fa","w") for line in fr: line.strip()#去除每一行自帶的換行符 if not line[0] == "#": #去除含有#的行,這行**也可以寫成if line[0] == "#": tmp = line.split("\t") #gff3檔案本身每一行以tab鍵分割 if tmp[0] == "1" and tmp[2] == "gene" and int(tmp[3]) > 10000 and int(tmp[3]) < 50000: geneid = tmp[8].split(";")[0].split("=")[1].split(":")[1] mystr = "\t".join([tmp[0],tmp[3],tmp[4],geneid]) fw.write(mystr+"\n") #fw.write(line)fr.close()fw.close()
fr = open("c:/users/administrator/desktop/a/arabidopsis_thaliana.tair10.46.gff3/arabidopsis_thaliana.tair10.46.gff3","r") fw = open("c:/users/administrator/desktop/a/arabidopsis_thaliana.tair10.46.gff3/out.fa","w") for line in fr: line.strip()#去除每一行自帶的換行符 if not line[0] == "#": #去除含有#的行,這行**也可以寫成if line[0] == "#": tmp = line.split("\t") #gff3檔案本身每一行以tab鍵分割 if tmp[0] == "1" and tmp[2] == "gene" and int(tmp[3]) > 10000 and int(tmp[3]) < 50000: geneid = tmp[8].split(";")[0].split("=")[1].replace(":","=") mystr = "\t".join([tmp[0],tmp[3],tmp[4],geneid]) fw.write(mystr+"\n") #fw.write(line)fr.close()fw.close()
gff檔案 Py005 gff檔案處理1
根據第3列的type,提取mrna及相應exon的資訊 思路 每次讀取一行,提取到mrna特徵值後,寫出該行 判斷下一行是否具有mrna或exon特徵值,如果有的話,遞迴自動判斷下下一行 import re import sys sys.setrecursionlimit 1000000 設定最高遞...
gff檔案 gff gtf格式
1 gff3及gtf2簡介 乙個物種的基因組測序完成後,需要對這些資料進行解讀,首先要先找到這些序列中轉錄起始位點 基因 外顯子 內含子等組成元件在染色體中的位置資訊 即注釋 後才能再進行深入的分析。gff gtf是貯存這些注釋資訊的兩種檔案格式。gff general feature format...
檔案格式 gff格式
gff檔案格式 gff格式是 sanger 研究所定義,是一種簡單的 方便的對於 dna rna以及蛋白質序列的特徵進行描述的一種資料格式,已經成為序列注釋的通用格式,比如基因組的基因 許多軟體都支援輸入或者輸出gff格式。前格式定義的最新版本是版本3。原始定義見 song websitegff是存...