#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:
У вас есть два варианта:
- Быстрый и грязный способ: просто вызывайте их один за другим в скрипте оболочки или в скрипте Python (используя
system
илиsubprocess.Popen
) - Заставьте их выполнять свою работу в некоторой функции, импортируйте их в один скрипт и вызовите функцию «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())