【问题标题】:Calling one python script from another python script and wait unit execution completes从另一个 python 脚本调用一个 python 脚本并等待单元执行完成
【发布时间】:2014-12-30 15:05:02
【问题描述】:

让我用一个例子来解释我的问题:

我有script1.py,是这样的:

script1.py

for (i in range(0,10))
    generate script2.py
    execute(script3.py)

script3.py 导入 script2.py

我需要做的是生成不同的script2.py 10次,然后执行script3.py。 script3.py 生成一个文件夹,将所有文件从所有三个脚本所在的同一文件夹复制到不同的位置。 script2.py 中定义了一些参数,script3.py 使用这些参数生成文件夹名,然后将所有文件复制到该文件夹​​中。

我曾尝试使用os.system()subprocess.callwaitsubprocess.Popen 进行通信,但我无法正确完成。

发生的情况是,即使迭代计数为 10,它也不会生成 10 个文件夹。虽然 script2.py 中的参数正在更改,但 script3.py 使用旧参数生成文件夹名称。

我在 Windows 机器上使用 Python 3.3 执行此操作。

任何可能的解决方案或我可能犯的任何错误的指针?

【问题讨论】:

  • 您说的是this should create more folders than it does,但您没有向我们展示任何创建文件夹的代码。我们不是通灵者。鉴于这些信息有限,我们只能说:您的代码中存在错误。
  • 抱歉这个含糊的问题。我已经更新了这个问题。我希望这现在更清楚了。谢谢。

标签: python python-3.3


【解决方案1】:

使用subprocess。下面的例子。

import subprocess

for i in range(10):
    generate script2.py

    cmd = ['python', 'script3.py']
    subprocess.Popen(cmd).wait()

    # Python will now wait for script3 to return
    # before going on to the next iteration

Useful documentation here

【讨论】:

  • 在 Windows 上,我猜我也需要添加命令“python”。
  • 在 Windows 上,我猜我还必须在命令中添加“python”。我试过这个,但是,它生成的文件夹数量少于它应该的数量。我不确定为什么等待命令不能正常工作。
  • 如果它在请求10时生成7个文件夹,请尝试请求15,它可能会生成10:)
  • 刚刚在您的回答中看到了您的编辑。我没有同时执行 script2 和 script3。我在script1.py中生成一个文件“script2.py”,然后只执行script3.py,它导入scrtip2.py。
  • 但不知道答案 - 很奇怪
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 2016-09-03
  • 1970-01-01
相关资源
最近更新 更多