<ol>
<li>如果它是类似.fasta的文件,它很可能包含多个序列。在</li>
<li>在stackoverflow上读取python中的大文件的例子很多,给出了一些有用的方法<a href="https://stackoverflow.com/questions/8009882/how-to-read-large-file-line-by-line-in-python">here</a>。我通常使用上面给出的方法来回答这个问题(<code>with open(...) file</code>)。它速度快,占用的内存更少。在</li>
<li><p>似乎你想用固定大小的滑动窗口来处理数据。
我会这样做:</p>
<pre><code>def load_fasta(fasta_file_name, sliding_window_size = 100):
buffer = ''
with open(fasta_file_name) as f:
for line in f:
if line.startswith('>'):
#skip or get some info from comment line
buffer = ''
else:
#read next line
buffer += line.strip('\r\n')
offset = 0 # zero-based offset for current string
while (offset + sliding_window_size <= len(buffer)):
next_sliding_window = buffer[offset : offset + sliding_window_size]
yield(next_sliding_window)
offset += 1
buffer = buffer[offset : ]
for str in load_fasta("a.fas.txt", 100):
#do some processing with sliding window data
print(str)
</code></pre></li>
</ol>
<p>如果您真的想处理长度小于100(或者在我的示例中,小于<code>sliding window size</code>)的数据部分,您将不得不稍微修改该函数(在出现新的注释行和处理结束时)。在</p>
<p>您也可以<a href="http://biopython.org" rel="nofollow noreferrer">biopython</a>。在</p>