在Automator中将操作分配给变量,以便在Shell脚本中使用

4

enter image description here

好的,这个问题现在让我感到很疯狂。因此,动作1选择一个文件夹(我想将该文件夹的路径保存为var_1),而动作3选择一个文件(我想将该文件的路径保存为var_2)。

所以最终结果是...

var_1 = '/Users/Prometheus/Desktop/'
var_2 = '/Users/Prometheus/Documents/a.txt'

那么我如何在Shell脚本中使用这些变量及其值以Python? 我无法使用sys.argv,因为它们被设置为某些奇怪的变量。

通常我会将“要求Finder项目”>运行Shell脚本,然后

import sys

variable = open(argv[1]).read()

但在这种情况下我无法使用它。我的脚本是用Python编写的,因此我更喜欢使用Python,因为我不了解其他语言。

2个回答

10
Automator变量仅在Automator工作流中使用。这些变量本身不能直接访问Shell脚本或Python脚本。 运行Shell脚本操作允许您通过两种方式之一将特定变量的值传递给Shell脚本:通过stdin进行管道传输或通过执行参数进行传递。对于这种用例来说,后者更容易。首先,您需要在设置变量的值获取变量的值操作中选择Automator变量名称,以便所选值可以在操作之间保留。这是一个非常基本的工作流示例,我已经选择了两个文件夹:

你不知道你刚刚帮了我多少忙,非常感谢。你的解释非常好,现在我明白之前发生了什么了! - O.rka

0

您可以使用类似以下的“运行 AppleScript”操作来显示对话框:

POSIX path of (choose folder default location (path to desktop))
result & linefeed & POSIX path of (choose file default location (path to desktop))

然后在“运行 shell 脚本”操作中将“传递输入”设置为“到 stdin”,并使用以下脚本:
import sys
folder, file = sys.stdin.read().splitlines()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接