我必须通过读取另一个文件将子字符串写入新文件。我面临的问题是它只写了最后找到的子字符串。 这是我尝试过的。
def get_fasta(site):
with open('file1.txt', 'r') as myfile:
data=myfile.read()
site = site-1
str1 = data[site:site+1+20]
temp = data[site-20:site]
final_sequence = temp+str1
with open('positive_results_sequences.txt', 'w') as my_new_file:
my_new_file.write(final_sequence + '\n')
def main():
# iterate over the list of IDS
for k,v in zip(site_id_list):
get_fasta(v)
if __name__ == '__main__':
main()
答案 0 :(得分:2)
那是因为您已经以w
模式打开了内部文件,每次都会重新创建文件。所以最终结果是只有最后一次写入仍然存在。您想使用a
模式(代表“追加”)。
您的代码还存在其他一些问题。例如,在每次循环迭代中打开和关闭两个文件。您应该将文件打开代码移到外面并将它们作为参数传递:
def main():
with open('file1.txt', 'r') as myfile:
with open('positive_results_sequences.txt', 'a') as my_new_file:
for k,v in zip(site_id_list):
get_fasta(v, myfile, my_new_file)