AppleScript: попытка записи в файл TextEdit

Я пытаюсь писать в уже созданный файл TextEdit. Файл находится в режиме rwxrwxrwx, поэтому проблем с разрешениями нет.

Но когда я выполняю свой код, возникает ошибка:

error "Network file permission error." number -5000 from file "/Users/me/Desktop/A directory/file.txt" to «class fsrf»

Мой код здесь:

-- Writing in the TextEdit file
set file_URLs_content to "HEEEELLOOOOOO"
tell application "TextEdit"
    set theFile to "/Users/me/Desktop/A directory/file.txt"
    set file_ref to (open for access file theFile with write permission)
    set eof file_ref to 0
    write file_URLs_content to file_ref
    close access file_ref
end tell

И мой файл file.txt все еще пуст, как мне избежать этой ошибки?


person Seb    schedule 04.03.2013    source источник


Ответы (3)


Для этого вам не нужен TextEdit. Попробуй это:

set the logFile to ((path to desktop) as text) & "log.txt"
set the logText to "This is a text that should be written into the file"
try
    open for access file the logFile with write permission
    write (logText & return) to file the logFile starting at eof
    close access file the logFile
on error
    try
        close access file the logFile
    end try
end try
person Community    schedule 04.03.2013

Чтобы избежать ошибок при написании текста с помощью TextEdit, нужно помнить, что это текстовый редактор. Он уже знает, как создавать и сохранять текстовые документы без ошибок. Вам не обязательно использовать (подверженный ошибкам) ​​открытый доступ. Вам не нужно использовать (подверженные ошибкам) ​​сценарии оболочки. Все, что вам нужно сделать, это попросить TextEdit создать текстовый документ с любым содержимым и сохранить его в любом месте. TextEdit знает, как это сделать, не создавая ошибок доступа к файлам (например, открытых для доступа) или случайно перезаписывая папки (например, сценарии оболочки).

tell application "TextEdit"
    activate
    set theDesktopPath to the path to the desktop folder as text
    set file_URLs_content to "HEEEELLOOOOOO"
    make new document with properties {text:file_URLs_content}
    save document 1 in file (theDesktopPath & "file.txt")
    close document 1
end tell

Преимущество этого метода в том, что его быстрее и проще писать, он менее подвержен ошибкам, текстовый файл, который вы получаете в качестве вывода, имеет те же свойства, что и текстовые файлы, которые вы создаете вручную с помощью TextEdit, и ваш скрипт теперь может быть легко расширен за счет включения других приложений. Например, текстовое содержимое может поступать из другого приложения или из буфера обмена, а текстовый файл может быть открыт в другом приложении или отправлен по электронной почте после его сохранения.

Самая фундаментальная особенность AppleScript - это отправка сообщений в приложения Mac таким способом. Если вы хотите преобразовать PNG в JPEG, вам не нужно писать декодер PNG и кодировщик JPEG в AppleScript, а открывать файл PNG для доступа и читать его побайтно, а затем кодировать JPEG побайтно. Вы просто говорите Photoshop открыть изображение PNG и экспортировать его как JPEG в определенное расположение файла. Команда «открыть для доступа» - это последнее средство для чтения и записи файлов, для которых у вас просто нет приложения для чтения или записи. Команда «do shell script» предназначена для включения приложений командной строки, когда у вас просто нет приложения Mac для выполнения этой работы, например, вы можете выполнять регулярные выражения с помощью Perl. Если все, что вы делаете, - это работа с текстовыми файлами, у вас есть не только TextEdit, но и бесплатный TextWrangler из Mac App Store, а также огромный словарь AppleScript для чтения, записи и редактирования текстовых файлов.

person Simon White    schedule 19.08.2014

Пытаться:

set file_URLs_content to "HEEEELLOOOOOO"
set filePath to POSIX path of (path to desktop as text) & "file.txt"
do shell script "echo " & quoted form of file_URLs_content & " > " & quoted form of filePath
person adayzdone    schedule 04.03.2013