Как создать цикл if существования файла в python?

#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)
  

В вашем исходном коде паретезы были неуместны ( % интерпретировался как оператор остатка, поэтому интерпретатор не жаловался на синтаксическую ошибку).