#python #if-statement
#python #if-statement
Вопрос:
Я пытаюсь выполнить серию команд для двух входных файлов, но я не хочу делать то же самое, если это уже было сделано. Чтобы было более понятно, это мои команды:
from subprocess import call
import os.path
pathway = raw_input("Please give the pathway of your Genome Folder ( .fa files): ")
genome= raw_input("Please type your genome name (e.g. chick_build2.1):" )
#Building a genome (.stidx for stampy)
cmd = "python /space/tierzucht/mgholami/stampy-1.0.13/stampy.py -G %s %s/*.fa" %(genome, pathway)
#Building a genome (.fa for BWA)
cmd = "cat %s/*.fa > %s.fa" %(pathway, genome)
#Building an index (for BWA)
cmd = "bwa index %s.fa " %(genome)
call(cmd, shell=True)
и что я хочу сделать, это добавить цикл if перед каждой командой, чтобы, если файл уже существует, не запускать эту команду. Я пробовал это, но это не работает:
if os.path.isfile("%s.stidx") %genome == False:
cmd = "python /space/tierzucht/mgholami/stampy-1.0.13/stampy.py -G %s %s/*.fa" %(genome, pathway)
что я пытаюсь сделать, так это проверить, существует ли формат stidx выбранного имени файла! И я хочу сделать это с форматом fa и несколькими другими.
Комментарии:
1. Почему вы не используете make для этого?
Ответ №1:
Попробуйте:
if not os.path.isfile("%s.stidx"%genome):
cmd = "python /space/tierzucht/mgholami/stampy-1.0.13/stampy.py -G %s %s/*.fa" %(genome, pathway)
В вашем исходном коде паретезы были неуместны ( %
интерпретировался как оператор остатка, поэтому интерпретатор не жаловался на синтаксическую ошибку).