У меня очень простой скрипт в python, который запускает определенную пользователем функцию (гетеро), которая объединяет последовательности (строки текста) вместе над очень большими файлами, по 2 последовательностей (строк) за раз. Во всяком случае, как я его написал, он выводит на экран, но я хотел бы написать весь вывод в один файл.Запись строк в файл python
f = open ("new", "r")
while True:
line1 = f.readline()
line1a = line1.split()
line2 = f.readline()
line2a =line2.split()
if not line2: break
tri="".join ([hetero(b1, b2) for (b1, b2) in zip(line1a[2], line2a[2])])
print line1a[1]+"_"+line1a[0],tri
Это просто выводит на терминал результаты сценария. Так что я попытался записать результаты (из команды печати, «line1a [1] + .....») открыл другой файл для записи (прилагается к концу сценария):
out_file = open ("out.txt", "w")
out_file.write(line1a[1]+"_"+line1a[0],tri)
out_file.close()
Но, конечно, это не сработает. Я не понимаю, почему, хотя ... Нужно ли мне открывать файл для записи вместе с файлом для чтения, чтобы его внешняя часть цикла While? Дело в том, что скрипт читает по две строки за весь файл и печатает идентификационную информацию и последовательность в одной строке, каждый раз - я хочу напечатать все эти результаты в одном файле.
Это простое решение, я уверен, но я не использую python, который часто и всегда затрудняет работу с файловой системой i/o.
Если вам не нравится python file I/O ': (', вы также можете использовать оболочку для перенаправления вывода консоли в файл. Вместо 'python my_program.py' выполните' python my_program.py> .txt'. Таким образом, вы можете сохранить свой оператор печати как есть. – turbulencetoo
Открыть выходной файл перед циклом, записать в цикле, закрыть после цикла – vmg