Как написать текстовый файл с помощью AppleScript?

Итак, это он. Как написать текстовый файл с помощью AppleScript?

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

Ответы

Ответ 1

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

Ответ 2

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

do shell script "echo TEXT > some_file.txt"

Ответ 3

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

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

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

Ответ 4

@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

Вышеупомянутый script работает отлично.


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

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

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

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

Апострофы в Я "рассматривается как часть команды.


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

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

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

Ответ 5

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

сделать shell script "эхо" и процитированную форму foobar и " → some_file.txt"

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

скажите мне сделать shell script "#..."

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