【问题标题】:extendscript return argument from python scriptpython脚本的extendscript返回参数
【发布时间】:2018-03-04 16:37:06
【问题描述】:

我正在编写一个扩展脚本代码(Adobe After Effects - 但它基本上只是 javascript),它需要在服务器上迭代数以万计的文件名。这在扩展脚本中非常慢,但我可以在几秒钟内使用 python 完成我需要做的事情,无论如何这是我的首选语言。所以我想运行一个python文件并将一个数组返回到extendscript。我可以通过创建和执行批处理文件来运行我的python文件并传递一个参数(根文件夹),但是如何将结果(一个数组)传递回extendscript?我想我可以写出一个 .csv 并将其读回,但这似乎有点“hacky”。​​

【问题讨论】:

  • 你可以做到。我不记得怎么做的,但请阅读文档。 Extendscript 有一些 JS 没有的特性。具体指令等。
  • 我在 JavaScript 工具指南中搜索了一下,我想出的只是 .execute() 方法,它将运行批处理文件,但我不知道如何取回数组进入AE。有什么具体的想法吗?
  • 来自 JS 工具指南关于:fileObj.execute() 方法“如果应用程序启动成功,则立即返回 true。”所以我不能从中返回任何东西......
  • 让 Python 将“完成”写入文件。然后使用 Javascript 计时器循环检查文件,直到完成,并在完成时运行回调。这样的事情似乎是你最好的选择。您还可以导入支持承诺和/或延迟对象的第 3 方 JS 库。这就是我要做的。
  • @user1167442 如果您好奇,请查看下面 ariestav 的答案 - 这正是我所需要的!

标签: python batch-file extendscript


【解决方案1】:

在 After Effects 中,您可以使用“系统”对象的 callSystem() 方法。这使您可以访问系统的外壳,以便您可以从代码中运行任何脚本。因此,您可以编写回显或打印数组的 python 脚本,这基本上是 system.callSystem() 方法返回的内容。这是一个同步调用,所以它必须在 ExtendScript 中的下一行执行之前完成。

实际代码可能类似于:

var stdOut = system.callSystem("python my-python-script.py")

【讨论】:

  • 这正是我所需要的,谢谢!该死的扩展脚本文档太可怕了……javascript工具指南中没有提到这一点,只有AE脚本指南,即使在那里也很难找到……
  • @Spencer - Extenscript 文档太可怕了。很高兴你解决了。
猜你喜欢
  • 1970-01-01
  • 2012-10-29
  • 2018-10-02
  • 2017-11-20
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 2023-03-27
相关资源
最近更新 更多