Apple Script:如何将用户输入保存到文本文件

时间:2020-04-08 07:42:29

标签: python-3.x applescript

我在python应用程序中使用Apple脚本,如何将用户提供的输入保存为文本文件?

 firstname = """
    display dialog "Enter your first name " default answer "" ¬
    buttons {"Submit"}
    """

1 个答案:

答案 0 :(得分:1)

请考虑以下任一解决方案:

解决方案A:使用Python将用户输入保存到文本文件中。

import os

from subprocess import Popen, PIPE

userPrompt = """
    tell application "Finder"
      activate
      text returned of (display dialog "Enter your first name " default answer "" buttons {"Submit"})
    end tell
    """

proc = Popen(['osascript', '-'], stdin=PIPE, stdout=PIPE, stderr=PIPE, universal_newlines=True)

firstname, error = proc.communicate(userPrompt)

filePath = os.path.join(os.path.expanduser('~'), 'Desktop', 'result.txt')

with open(filePath, 'w') as file:
    file.write(firstname)
  • 这利用Popen构造函数来封装实际上运行AppleScript的osascript命令。
  • 当前,用户提供的输入将被写入名为results.txt的文件,该文件将保存到 Desktop 文件夹中。 os.path模块用于确定目标文件路径。您需要根据需要对此进行更改。
  • 最后我们write the user input to file使用open()

解决方案B:使用AppleScript将用户输入从Python保存到文本文件中。

另一种方法是利用AppleScript的do shell script命令 来将用户输入保存为文本文件。

在这种情况下,您的.py文件如下:


userPrompt = """
    tell application "Finder"
      activate
      set firstname to text returned of (display dialog "Enter your first name " default answer "" buttons {"Submit"})
      do shell script "echo " & quoted form of firstname & " > ~/Desktop/result.txt"
      return firstname
    end tell
    """

proc = Popen(['osascript', '-'], stdin=PIPE, stdout=PIPE, stderr=PIPE, universal_newlines=True)

firstname, error = proc.communicate(userPrompt)

# print(firstname)

该行显示为:

do shell script "echo " & quoted form of firstname & " > ~/Desktop/result.txt"

基本上利用shell echo实用程序将用户输入重定向/保存到名为results.txt的文件中,该文件再次保存到 Desktop 文件夹中。