python - 一次,读取 4行

  显示原文与译文双语对照的内容
0 0

我正在尝试一次读取一个fastq文件。 文件中有几行。 但是当我输入代码时,我得到了:

回溯( 最近一次通话):

文件" fastq.py",第 11行,在

line1 = fastq_file.readline( )

AttributeError:'str'对象没有属性'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."

如何修复它,以便我可以以将每行分配给一个字符串,然后在文本文件中写入这些字符串?

时间:原作者:8个回答

0 0

你需要先打开文件

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

你可以能想在实际获得,循环之前打开它们,但是我没有它的他代码,因这里我不能构造它。

原作者:
0 0

你必须像这样打开文件。

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 0

什么是 fastq_file你的代码不正确。 如果fastq_file是文件描述符,则它不能是str对象。

原作者:
...