当前位置: 首页 > 面试题库 >

如何从另一个python脚本文件中执行带有参数的python脚本文件

寇宏义
2023-03-14
问题内容

我的问题是我想从另一个python文件中执行一个带有参数的python文件以获得返回值…。

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

例:

从外壳执行以下命令:

          getCameras.py "path_to_the_scene"

这会给我返回照相机清单。

所以我怎么能从另一个脚本中调用这个脚本(包括参数)呢?

我一直在尝试通过阅读此处的其他一些问题自己弄清楚,但是我做得不好,我应该使用execfile()函数吗?究竟如何?

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

好的,在查看了您的答案之后,我必须编辑我的问题以使其更简洁,并且因为我听不懂某些答案(对不起,就像我说的我是新手!):

好吧,我有这两个脚本“ getMayaCameras.py”和“ doRender.py”,还有一个名为“
renderUI.py”的脚本,它在GUI中实现了前两个脚本。

“ getMayaCameras.py”和“ doRender.py”都是可以通过添加参数(或在“
doRender.py”情况下为标志)直接从系统外壳执行的脚本,如果可能,我想仍然具有这种可能性,因此我可以选择执行UI还是直接从外壳执行脚本

我已经通过从“ 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()

再次感谢,


问题答案:

最好的答案是 不要 。将您的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]))

然后从其他脚本中执行

import getCamera

getCamera.main(arg1, arg2)

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



 类似资料:
  • 问题内容: 我想从另一个Python脚本运行一个Python脚本。我想像使用命令行一样传递变量。 例如,我会跑我的,将通过值(0,1,2,3)的列表迭代第一个脚本,并通过那些到第二脚本,然后,等 我发现了Stack Overflow问题1186789,这是一个类似的问题,但是ars的答案调用了一个函数,在这里我想运行整个脚本,而不仅仅是函数,而balpha的答案则调用了脚本,但没有参数。我将其更改

  • 问题内容: 我有一个长期运行的python脚本,希望能够从另一个python脚本结束。理想情况下,我正在寻找一种将进程ID设置为第一个脚本并能够从第二个脚本通过该ID查看其是否正在运行的方法。此外,我希望能够终止该长时间运行的过程。 有没有很酷的捷径可以实现这一目标? 另外,我在Windows环境中工作。 我最近在这里找到了另一种答案:检查python脚本是否正在运行 问题答案: 您可以通过以下方

  • 所以我有主python脚本,我想从我的主文件中调用另一个python脚本,但是,每当我这样做的时候,我调用的脚本就会超过原来的脚本控制台中的主脚本?

  • 问题内容: 我需要从我的Python脚本执行该脚本。 可能吗?该脚本会生成一些输出,并写入一些文件。如何访问这些文件?我尝试了子流程调用功能,但没有成功。 应用程序“ bar”还引用了一些库,除了输出外,它还创建了文件“ bar.xml”。我如何访问这些文件?只是通过使用open()? 谢谢, 编辑: Python运行时的错误仅是这一行。 问题答案: 要执行外部程序,请执行以下操作: 是的,假设您

  • 问题内容: 我尝试执行以下操作(我的jar和python文件都在同一目录中): 和 无论是工作过。因此,我当时以为应该改用Jython,但我认为必须有一种更简单的方法来通过python执行jar文件。 你知道我可能做错了什么吗?或者,是否还有其他网站可以进一步研究我的问题? 问题答案: 我将以这种方式使用子流程: 但是,如果你有一个正确配置的,你应该能够直接运行jar,因为你写的。 那么,这正是您

  • 问题内容: 我有一个Maven项目,其中我正在尝试执行脚本(用R编写)。我也将此脚本文件放在源代码目录中。我发现此脚本根本没有执行。但是,当我将此脚本移到jar文件之外时,它会执行!谁能告诉我原因,并给我一些解决方案以将脚本放入jar中,同时确保其执行? 非常感谢 ! 问题答案: 我将执行以下操作: 使用ClassLoader.getResourceAsStream()获取文件的InputStre