我正在尝试使用applescript创建一个包含预定文本的plist文件。我需要能够将此文本写入文件“plistfile.plist
”,但每当我运行脚本时,我都会收到错误“Can't get file (alias "MacintoshHD:Users:myusername:Desktop:plistfile.plist")
”。我的剧本是:
set plistfilename to POSIX file "/Users/myusername/Desktop/plistfile.plist" as alias
set ptext to "plist text"
set plist to open for access file plistfilename & "plistfile.plist" with write permission
write ptext to plist
close access file plist
我对这些都不是很熟悉,但我认为这是有道理的。我做了一些谷歌搜索,我没有在其他任何地方找到这个问题。如果有人能让我知道我错过了什么,我会非常感激。
答案 0 :(得分:1)
代码失败,因为如果文件不存在,强制as alias
会抛出错误。
这是将文本写入文件的通常可靠的方法
set plistfilename to (path to desktop as text) & "plistfile.plist"
set ptext to "plist text"
try
set fileDescriptor to open for access file plistfilename with write permission
write ptext to fileDescriptor as «class utf8»
close access fileDescriptor
on error
try
close access file plistfilename
end try
end try
修改强>
即使您通过.txt
扩展程序,也请考虑该脚本的结果是一个简单的.plist
文件。
要创建真实属性列表文件,您可以使用System Events
:
tell application "System Events"
set rootDictionary to make new property list item with properties {kind:record}
-- create new property list file using the empty dictionary list item as contents
set the plistfilename to "~/Desktop/plistfile.plist"
set plistFile to ¬
make new property list file with properties {contents:rootDictionary, name:plistfilename}
make new property list item at end of property list items of contents of plistFile ¬
with properties {kind:boolean, name:"booleanKey", value:true}
make new property list item at end of property list items of contents of plistFile ¬
with properties {kind:string, name:"stringKey", value:"plist text"}
end tell
该脚本创建此属性列表文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>booleanKey</key>
<true/>
<key>stringKey</key>
<string>plist text</string>
</dict>
</plist>