上記のスクリプトを作成して、データベースから不要な遺伝子を削除しました。一度だけ使用するとうまくいきますが、再実行すると、次のようなエラーメッセージが表示されます。 shutil.Error:宛先パス 'path/rejected_database_genes/gene_A.fa'は既に存在します 明らかにそれは止まる。私は、ファイル内に2つ以上の遺伝子が削除される必要があるときに問題が発生すると思います。 よろしくお願いいたします。ご協力いただきありがとうございます。私は対処できるエラーを投げているpythonスクリプト
import glob, sys, os, shutil
from Bio import SeqIO, SearchIO
from Bio.SeqRecord import SeqRecord
import argparse
def help_function():
print 'Hi'
parser = argparse.ArgumentParser()
parser.add_argument('-input_file', '-i',type=str,help='path_to_data')
opts = parser.parse_args()
def check_file_exists(filepath, file_description):
if not os.path.exists(filepath):
print("The " + file_description + " (" + filepath + ") does not exist")
sys.exit(1)
else:
print file_description + " detected"
def remove_empty_files(alleles_files,destination):
input_handle=open(alleles_files, 'r')
gene_records=list(SeqIO.parse(input_handle, 'fasta'))
for gene_record in gene_records:
#filename=gene_record.id[0]
#count=0
if len(gene_record.seq)<5 or 'N'in gene_record.seq:
print gene_record.id
elif '-' in gene_record.seq:
print gene_record.id
#count+=1
shutil.move(alleles_files, destination)
def main():
destination=opts.input_file + '/rejected_database_genes'
if os.path.exists(destination):
print 'Folder already exits'
else:
os.makedirs(destination)
print 'Folder has been created'
files=glob.glob(opts.input_file+'/*.fa')
#print files
#sys.exit()
for f in files:
#print f
#sys.exit()
alleles_files=glob.glob(f)[0]
#print alleles_files
#sys.exit()
remove_empty_files(alleles_files,destination)
print 'Files have been removed'
main()
スクリプトを実行し、結果ファイルを手作業で名前を変更してから再実行することはできますか? – Arne
@ArneRecknagel。それは非常に良いバイオインフォマティクスの仕事ではありません。さらに、同じファイルから2つ以上の遺伝子を除去する必要がある場合に問題が生じる。 – Ana
*ファイルを削除してもよろしいですか?コードでは、他の目的地に移動することを明らかに*しようとしています。 'shutil.move'を移動させたい場合、' shutil.move'はそれを既存の場所から削除して保存先に保存しようとしますが、ファイルが既に保存先に存在すると失敗する可能性があります。最も簡単な方法は、ファイルが宛先に存在するかどうかを確認して削除することです(例: 'os.remove')。それとも最初に削除してください。 – phoenix