создание одного скрипта, обертывающего 3 кода python

#python

#python

Вопрос:

У меня есть 3 кода python, которые я хочу вызывать один за другим автоматически, чтобы они приводили к окончательному в одном вызове. Как мне обернуть эти коды в один скрипт? коды являются model-multiple.py , align2d.py model-single.py .

model-multiple.py является

 from modeller import *              # Load standard Modeller classes
from modeller.automodel import *    # Load the automodel class

log.verbose()    # request verbose output
env = environ()  # create a new MODELLER environment to build this model in


env.io.atom_files_directory = ['.', '../atom_files']

a = automodel(env,
alnfile  = '3NTD_align.ali', # alignment filename
knowns   = ('3NTDA'),    
sequence = 'target',        # code of the target
assess_methods=(assess.DOPE, assess.GA341,assess.normalized_dope))
a.starting_model= 1                 # index of the first model
a.ending_model  = 1              # index of the last model
                                    # (determines how many models to calculate)
a.make()                            # do the actual homology modeling
  

Комментарии:

1. Это не «коды python», это файлы Python (program). Код — это функция, отображающая содержимое и представление неочевидным способом.

2. @phihag: слово «код» в английском языке имеет более одного значения

Ответ №1:

У вас есть два варианта:

  1. Быстрый и грязный способ: просто вызывайте их один за другим в скрипте оболочки или в скрипте Python (используя system или subprocess.Popen )
  2. Заставьте их выполнять свою работу в некоторой функции, импортируйте их в один скрипт и вызовите функцию «do work» каждого модуля

Ответ №2:

Если все три скрипта похожи на ваш пример, вы можете использовать следующий скрипт на Python, чтобы запускать их один за другим:

 __import__('model-multiple')
import align2d
__import__('model-single')
  

__import__ требуется, потому что дефисы (-) недопустимы в именах импорта. Если вы готовы переименовать скрипты:

 import model_multiple
import align2d
import model_single
  

Ответ №3:

Вероятно, вам следует подумать об организации ваших скриптов таким образом, чтобы их было удобно вызывать как из других скриптов, так и напрямую. Общая схема такова:

 def main():
    # do all the work
if __name__ = '__main__':
    import sys
    sys.exit(main())