gff檔案 pyhton讀寫資料檔案

2021-10-13 19:58:36 字數 4023 閱讀 8274

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是存...