моя проблема в том, что я хочу выполнить файл python с аргументом из другого файла python, чтобы получить возвращаемые значения....
Я не знаю, хорошо ли я это объяснил...
Пример:
из оболочки я выполняю это:
getCameras.py "path_to_the_scene"
и это вернет мне список камер....
так как я могу назвать этот script (включая аргумент) из другого script???
Я пытался разобраться в этом сам, прочитав здесь несколько других вопросов, но я не понял его, должен ли я использовать функцию execfile()? как именно??
Заранее благодарим за помощь новичку, как я!
Хорошо, посмотрев ваши ответы, я должен отредактировать свой вопрос, чтобы сделать его более кратким, и потому что я не понимаю некоторых ответов (извините, как я уже сказал, что я новичок!!!):
Ну, у меня есть два сценария "getMayaCameras.py" и "doRender.py" и еще один вызванный "renderUI.py", который реализует первые 2 скрипта в графическом интерфейсе.
"getMayaCameras.py" и "doRender.py" - это оба сценария, которые можно выполнить непосредственно из системной оболочки, добавив аргумент (или флаги в случае "doRender.py" ) и, если это возможно, Я хочу по-прежнему иметь такую возможность, поэтому я могу выбирать между выполнением пользовательского интерфейса или выполнением script dirctly из оболочки
Я уже сделал некоторые изменения для их работы, импортировав их из "renderUI.py" script, но теперь они не работают сами по себе....
Таким образом, возможно, что эти скрипты работают сами по себе и все еще имеют возможность называть их из другого script? как именно? Этот "отделяющий логику от обработчика аргументов командной строки, который вы мне рассказывали раньше, звучит хорошо для меня, но я не знаю, как реализовать его на моем script (я пробовал, но без успеха)....
Вот почему я размещаю здесь оригинальный код для того, чтобы увидеть, как я это сделал, не стесняйтесь критиковать и/или исправлять код, чтобы объяснить мне, как я должен сделать его для script для правильной работы...
#!/usr/bin/env python
import re,sys
if len(sys.argv) != 2:
print 'usage : getMayaCameras.py <path_to_originFile> \nYou must specify the path to the origin file as the first arg'
sys.exit(1)
def getMayaCameras(filename = sys.argv[1]):
try:
openedFile = open(filename, 'r')
except Exception:
print "This file doesn't exist or can't be read from"
import sys
sys.exit(1)
cameras = []
for line in openedFile:
cameraPattern = re.compile("createNode camera")
cameraTest = cameraPattern.search(line)
if cameraTest:
cameraNamePattern = re.compile("-p[\s]+\"(.+)\"")
cameraNameTest = cameraNamePattern.search(line)
name = cameraNameTest.group(1)
cameras.append(name)
openedFile.close()
return cameras
getMayaCameras()
Еще раз спасибо,
Дэвид