Applescript: "Файл уже открыт" при записи в новый файл
Я создаю текстовый файл, имя файла которого будет состоять из констант и переменных строк. По какой-то причине я получаю сообщение об ошибке "имя файла уже открыто", когда я просто его создаю. Файл создан, но ни один из моих материалов не попадает в файл.
Все исправления, которые я пробовал, заканчиваются другой ошибкой, говорящей "разрешение сетевого файла".
Кроме того, я должен отметить, что мой новый файл входит в тот же контейнер, что и другой файл, который используется для создания нового файла, где filePathAlias
приходит в.
Есть идеи? Заранее спасибо!
Вот сценарий:
-- get the file --
set filePathAlias to (choose file with prompt "** Choose File **")
set filePath to filePathAlias as string
tell application "Finder"
set fileName to name of filePathAlias
set containerPath to (container of filePathAlias) as string
end tell
set filePath to filePathAlias as string
-- get file container --
tell application "Finder"
set containerPath to (container of filePathAlias) as string
end tell
-- combine file name variable with constant suffix --
set finalFile to locationName & "_RMP_2014.txt"
-- create the file (THIS IS WHERE THE ERROR COMES IN) --
set myFile to open for access (containerPath) & finalFile with write permission
set listTextFinal to "text goes here"
try
write listTextFinal to myFile as text
close access myFile
on error
close access myFile
end try
2 ответа
Вы не указали пример пути для filePathAlias или locationName. Мне не удалось воспроизвести файл уже открытой ошибки. Я могу воспроизвести ошибку разрешения сетевого файла... Итак:
set filepathalias to ((path to desktop folder as string) & "test" as string) as alias
--alias of folder on desktop called test... massaged well to be an alias that can later be converted to string when making containerPath
set locationName to "stuff you left out" --Just a name I assume...
-- get file container --
tell application "Finder"
set containerPath to ((container of filepathalias) as string)
end tell
-- combine file name variable with constant suffix --
set finalFile to locationName & "_RMP_2014.txt"
-- create the file (THIS IS WHERE THE ERROR COMES IN) --
set myFile to open for access (containerPath) & finalFile with write permission
set listTextFinal to "text goes here"
try
write listTextFinal to myFile as text
close access myFile
on error
close access myFile
end try
Это отлично работает, если вы работаете на рабочем столе. Проблема, кажется, находится в стадии получения правильного пути.
Без всей массовки на filepathalias, которые я сделал в первой строке, мы получаем ошибку сетевого файла. Файл пытается сохранить в местах, которые вы не можете сохранить в....
Вам нужно будет проверить, что filepathalias, containerPath и finalFile содержат информацию, которую вы ожидаете.
Прямо под тем местом, где установлен finalFile, попробуйте это из редактора:
return {filepathalias as string, containerPath as string, finalFile as string}
мой результат из вышесказанного:
{"mac:Users:lithodora:Desktop:test:", "mac:Users:lithodora:Desktop:", "stuff you left out_RMP_2014.txt"}
Это похоже на то, что вы должны ожидать.
-- Convert the file to a string
set desktop_path to POSIX path of (path to desktop)
set theFile to desktop_path & "subject_lines.csv" as POSIX file
set theFile to theFile as string
-- Open the file for writing
set theOpenedFile to open for access file theFile with write permission
write "Hello Kitty" to theOpenedFile
-- Close the file
close access theOpenedFile
это может вызвать ошибку "Файл Mac: Пользователи:jun: Рабочий стол:subject_lines.csv уже открыт".
Если удалить, "установите theFile в theFile как строку" и внесите следующие изменения:
set theFile to desktop_path & "subject_lines.csv" as string
затем ошибка "Ошибка разрешения сетевого файла".