如何使用另一个python脚本文件中的参数执行python脚本文件

use*_*457 18 python

我的问题是我想用另一个python文件中的参数执行一个python文件来获取返回的值....

我不知道我是否解释得很好......

例:

从shell我执行这个:

          getCameras.py "path_to_the_scene"
Run Code Online (Sandbox Code Playgroud)

这给我一个相机清单....

那怎么能从另一个脚本调用这个脚本(包括参数)?

我一直试图通过阅读其他一些问题来解决这个问题,但是我没有把它弄好,我应该使用execfile()函数吗?怎么样?

在此先感谢帮助像我这样的新手!

好的,看看你的答案后,我必须编辑我的问题,使其更简洁,因为我不明白一些答案(抱歉,就像我说我是新手!!!):

好吧,我有两个脚本"getMayaCameras.py"和"doRender.py",另外一个叫做"renderUI.py",用于实现GUI中的前两个脚本.

"getMayaCameras.py"和"doRender.py"都是可以通过添加参数(或"doRender.py"情况下的标志)直接从系统shell执行的scipts,如果有可能,我想要仍然具有这种可能性所以我可以选择执行UI或从shell直接执行脚本

我已经通过从"renderUI.py"脚本导入它们来对它们进行了一些修改,但现在它们不能自己工作....

那么有可能让这些脚本自己工作,并且还有可能从另一个脚本调用它们吗?怎么样?这 "在命令行参数处理分离的逻辑"那你告诉我之前,听起来不错,我,但我不知道如何实现它在我的脚本(我试过,但没有更迭)....

这就是为什么我在这里发布原始代码给你,看看我是如何制作的,你可以自由地批评和/或纠正代码来解释我应该如何使脚本正常工作...

#!/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()
Run Code Online (Sandbox Code Playgroud)

再次感谢,

大卫

aar*_*ing 42

最好的答案是不要.把你的getCameras.py写成

import stuff1
import stuff2 
import sys

def main(arg1, arg2):
    # do whatever and return 0 for success and an 
    # integer x, 1 <= x <= 256 for failure

if __name__=='__main__':
    sys.exit(main(sys.argv[1], sys.argv[2]))
Run Code Online (Sandbox Code Playgroud)

从您的其他脚本,您可以这样做

import getCamera

getCamera.main(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

或者调用getCamera.py中的任何其他函数


Pon*_*dle 10

首先,我同意其他人的意见,你应该编辑你的代码,将逻辑与命令行参数处理分开.

但是如果您正在使用其他库并且不想编辑它们,那么知道如何从Python中执行等效的命令行工作仍然很有用.
解决方案是
在Windows上的os.system(命令)Atleast ,它会调出一个控制台并执行命令,就像在命令提示符中输入它一样.

import os
os.system('getCameras.py "path_to_the_scene" ')
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的答案,但我无法让它工作,至少我做的事情像camera = os.system('getCameras.py"path_to_the_scene"').....它没有得到返回的值 (2认同)