Как мне написать в текстовый файл, используя AppleScript? - PullRequest
18 голосов
/ 23 сентября 2010

Итак, все. Как я могу записать в текстовый файл, используя AppleScript?

Я пытался погуглить, но ответы, кажется, давным-давно, и я не совсем уверен, какой должна быть предпочтительная идиома в наши дни.

Ответы [ 5 ]

23 голосов
/ 23 сентября 2010
on write_to_file(this_data, target_file, append_data) -- (string, file path as string, boolean)
    try
        set the target_file to the target_file as text
        set the open_target_file to ¬
            open for access file target_file with write permission
        if append_data is false then ¬
            set eof of the open_target_file to 0
        write this_data to the open_target_file starting at eof
        close access the open_target_file
        return true
    on error
        try
            close access file target_file
        end try
        return false
    end try
end write_to_file

Взаимодействие с ним можно очистить следующим ...

my WriteLog("Once upon a time in Silicon Valley...")

on WriteLog(the_text)
    set this_story to the_text
    set this_file to (((path to desktop folder) as text) & "MY STORY")
    my write_to_file(this_story, this_file, true)
end WriteLog
9 голосов
/ 06 мая 2014

Короткая версия на чистом AppleScript:

set myFile to open for access (choose file name) with write permission
write "hello world" to myFile
close access myFile

Кажется, нет единого решения для одной команды.Вместо этого вы должны открыть, а затем закрыть файл.

8 голосов
/ 12 мая 2014

@JuanANavarro.

При использовании оболочки вы должны использовать форму в кавычках для ТЕКСТА и пути к файлу. Это поможет устранить ошибки с пробелами в именах файлов и символами, например апострофами в тексте.

set someText to "I've also learned that a quick hack, if one only wants to spit a bit of text to a file, is to use the shell."

set textFile to "/Users/USERNAME/Desktop/foo.txt"
do shell script "echo  " & quoted form of someText & " >  " & quoted form of textFile

Приведенный выше скрипт работает нормально.


Если у меня не было & цитируемой формы someText

но вместо этого у меня был & someText Я бы получил следующую ошибку.

ошибка "sh: -c: строка 0: неожиданный EOF при поиске соответствия` ''

sh: -c: строка 1: синтаксическая ошибка: неожиданный конец файла "номер 2

Апострофы в " I'm " рассматриваются как часть команды.


Если бы у меня было

установить для textFile значение "/ Users / USERNAME / Desktop / some foo.txt" в качестве пути к моему файлу (обратите внимание на пробел.) И не было & цитируемой формы textFile но вместо этого у меня было & textFile

Затем, когда файл был записан, он записывает в файл с именем " some ", а не " some foo.txt "

8 голосов
/ 27 сентября 2010

Я также узнал, что быстрый взлом, если кто-то хочет выплевывать немного текста в файл, это использовать оболочку.

do shell script "echo TEXT > some_file.txt"
3 голосов
/ 07 октября 2010

Для меня запуск сценария do shell был слишком медленным на PowerBook G4, когда он выполнялся в цикле 300000 раз;), но, конечно, это быстрее написать, что иногда имеет смысл.Вы также хотели бы экранировать символы оболочки, такие как:

do сценарий оболочки "echo" и цитируемая форма foobar & ">> some_file.txt"

и по эстетическим причинам я бы использовал

скажите мне сделать скрипт оболочки "# ..."

но я еще не убедился (во что я верю), что если "сделать скрипт оболочки" находится в блоке "скажи Finder"«Например, это процесс Finder, который создает подоболочку.С "скажи мне сделать скрипт", по крайней мере, журнал Script Editor выглядит лучше для меня.;)

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