У меня на Python есть следующий код:

#/usr/bin/python

from Bio import SeqIO

count = SeqIO.convert(“genome1.gbk”, “genbank”, “genome1.fasta”, “fasta”)

print("Converted %i records" % count)

Этот код преобразует файл genbank "genome1.gbk" в файл fasta "genome1.fasta". Но теперь я хочу преобразовать все файлы в текущей папке с помощью этого кода. Все файлы в текущей папке являются файлами genbank, и я хочу, чтобы они превратились в файлы fasta с помощью этого кода. Я думал об использовании подстановочных знаков, но я точно не знаю, как изменить этот код. Любая помощь приветствуется

2
Stephen Kitt 29 Ноя 2019 в 15:43
Имеются ли вложенные папки с файлами?
 – 
RomanPerekhrest
26 Ноя 2019 в 20:31
Нет, только файлы генбанка.
 – 
tucanco
26 Ноя 2019 в 21:46

2 ответа

Лучший ответ

С помощью функции Python os.scandir:

#/usr/bin/python

from Bio import SeqIO
from os import scandir

with scandir() as it:
    for entry in it:
        if entry.name.endswith('.gbk') and entry.is_file():
            count = SeqIO.convert(entry.name, 'genbank', '{}.fasta'.format(entry.name[:-4]), 'fasta')
            print("Converted %i records" % count)
0
RomanPerekhrest 26 Ноя 2019 в 21:57
1
Это сработало чудесно !!
 – 
tucanco
26 Ноя 2019 в 23:11

Вы можете следовать этому коду:

import os 
from Bio import SeqIO

for filename in os.listdir('.'):
  if filename.endswith(".gbk"):
    count = SeqIO.convert(filename, “genbank”, "{}.fasta".format(entry.name[:-4]), “fasta”)
    print("Converted %i records" % count)

BR,
Шахар

0
Shahar Gino 29 Ноя 2019 в 15:15
Но в этом случае все выходы будут иметь одинаковое имя (genome1.fasta) Я прав?. Этот код перезаписывает выходные файлы с тем же именем, и я этого не хочу. Все выходные файлы должны иметь одинаковые входные имена, но вместо .gbk должно быть .fasta.
 – 
tucanco
26 Ноя 2019 в 22:06
ОК, понял, исправил ответ
 – 
Shahar Gino
29 Ноя 2019 в 15:15