Apple Script: как сохранить пользовательский ввод в текстовый файл - PullRequest
0 голосов
/ 08 апреля 2020

Я использую скрипт Apple в своем приложении python. Как сохранить введенные пользователем данные в виде текстового файла?

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

1 Ответ

1 голос
/ 08 апреля 2020

Рассмотрим одно из следующих решений:

Решение 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 Конструктор для оболочки команды osascript, которая по сути выполняет AppleScript.
  • В настоящее время вводимые пользователем данные записываются в файл с именем results.txt, который сохраняется в * 1014 Папка * Desktop . Модуль os.path используется для определения пути к файлу назначения. Вам нужно будет изменить это при необходимости.
  • Наконец, мы записываем пользовательский ввод в файл , используя open().

Решение B. Использование AppleScript для сохранения пользовательского ввода в текстовый файл из Python.

Другой способ - shell-out с использованием 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"

по существу использует утилиту shells echo для перенаправления / сохранения пользовательского ввода в файл с именем results.txt, который снова сохраняется в папке Desktop .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...