2013-07-23 73 views
1

我正在嘗試一次讀取fastq文件的四行。文件中有幾行。但是當我把我的代碼,我得到這個:一次讀取4行

Traceback (most recent call last):

File "fastq.py", line 11, in

line1 = fastq_file.readline()

AttributeError: 'str' object has no attribute 'readline'

這是我的代碼:

import Tkinter, tkFileDialog #asks user to select a file 

root = Tkinter.Tk() 
root.withdraw() 

fastq_file = tkFileDialog.askopenfilename() 

if fastq_file.endswith('.fastq'): #check the file extension 
    minq = raw_input("What is your minimum Q value? It must be a numerical value.") #receives the minimum Q value 
    while True: 
     line1 = fastq_file.readline() 
     if not line1:break 
     line2 = fastq_file.readline(2) 
     line3 = fastq_file.readline(3) 
     line4 = fastq_file.readline(4) 

    txt = open(practice.text) 
    txt.write(line1) #puts the lines into the file 
    txt.write("\n") 
    txt.write(line2) 
    txt.write("\n") 
    txt.write(line3) 
    txt.write("\n") 
    txt.write(line4) 
    txt.write("\n") 
    print "Your task is complete!" 

else: 
    print "The file format is not compatible with the FastQ reader program. Please check the file and try again." 

我將如何解決它,這樣我可以每行分配給一個字符串,然後寫那些文本文件中的字符串?

+1

如何定義'fastq_file'?讓我看看你的完整代碼。 – rnbcoder

+1

'fastq_file'不是你認爲的那樣。它看起來像你有一個文件名,你還沒有打開它,所以'fastq_file'只是一個字符串。但是我們無法看到'fastq_file'的定義。 –

+0

另外你的問題沒有提到任何地方的多線程。如果它實際上不適用於這個問題,請取消標記。 –

回答

1

您需要打開該文件第一

while True: 
    with open(fastq_file) as fastq_file_open: 
     line1 = fastq_file_open.readline() 

你可能想打開它們之前,你真正得到的,而循環,但我沒有你的代碼的其餘部分,所以我不能精確地構造它。

+0

我沒有得到'while True:'部分。這段代碼將永遠持續打開並閱讀1行。 – tdelaney

+0

我現在在問題中加入了我的所有代碼。我將如何解決它?對不起,這是我的第一個程序。 – user2612453

1

你必須像這樣打開文件。

fastq_file = open("fastq_file","r") 

然後執行你的代碼。

還有。

txt = open("practice.text","w") # you have to pass a string and open it in write mode. 

順便說一句,你不需要使用readline(<number>),它只讀取從當前光標位置<number>字符。執行一個readline()後,光標移到下一個換行符後面,然後在下一個readline()處開始從那裏讀取。所以只需使用readline()

無論如何,我不知道你想達到什麼目的。但代碼看起來像你試圖將上下文從fastq_file複製到practice.text,這可以通過複製文件(使用shutil.copyfile)完成。

+0

我現在在問題中加入了我的所有代碼。我將如何解決它?對不起,這是我的第一個程序。 – user2612453

+0

還不清楚。代碼看起來像是將文件複製到'practice.txt'。我問你,在每個循環中你讀四條線的意義是什麼? – rnbcoder

-1

什麼是fastq_file?你的代碼不正確。如果fastq_file是文件描述符,則它不能是str對象。

+0

這是一條評論,而不是答案。請在下次對原始問題發表評論。 –