Я пытаюсь разбить большой файл каждые x шаблонов без успеха, как я могу это достичь?
Структура файла:
> ASDF ABCDEFGHIJKWERQWEWQYASTRDTAYDGAHSFDTS> QWERT ASJDHASDJHASDHASDHASJDHAJDHJHAD> ASDF ABCDEFGHIJKWERQWEWQYASTRDTAYDGAHSFDTS> QTRE AGAHDSJHDASJDHASJDHASJHDAJSDHJASHDJASHDJASHJDHASJDHASJDHAJSHDASJHDJASHDJASHDJASHDJASHDJASJDASHDSUHQYWGEYWGYWGQYWDWBCDEFGHIJKWERQWEWQYASTRDTAYDGAHSFDTS> ASDF ABCDEFGHIJKWERQWEWQYASTRDTAYDGAHSFDTSASHDJASHDJASDHAJSDHAJDHQUHWUDHUHAWUHASUDHUASDHSUDHSUОн имеет тысячи строк различной длины и несколько строк в заголовке ">". Я хочу разбить этот большой файл на более мелкую фильтрацию каждые 100 ">" заголовков на файл, это возможно сделать?
Спасибо заранее!
Сценарий ниже разбивает имя файла, указанное в командной строке, в файлы, когда определенное число символов > было замечено в начале строки. Количество отображаемых символов также указывается в командной строке. Таким образом, синтаксис выглядит следующим образом:
$ ./split_file.py input.txt 3
#!/usr/bin/env python
import sys
def write_split_file(count,orig_name,lines):
split_name = orig_name + '.split.' + str(count)
with open(split_name,'w') as fd:
fd.write("\n".join(lines))
def main():
counter = 0
limit = int(sys.argv[2])
line_list = []
with open(sys.argv[1]) as fd1:
for line in fd1:
line_list.append(line.strip())
if line.startswith('>'):
counter+=1
if counter % limit == 0:
write_split_file(counter,sys.argv[1],line_list)
line_list = []
if line_list:
write_split_file(counter,sys.argv[1],line_list)
if __name__ == '__main__': main()
Примечание: скрипт написан для Python 2, но совместим с Python 3. Может быть легко изменен для разделения на основе исходной строки переменных.