我尝试创建一个读取文本文件并将内容放入列表的AppleScript。该文件是一个简单的文本文件,其中每一行都如下所示:example-"example"
第一个是文件名,另一个是文件夹名。
现在是我的代码:
set listOfShows to {}
set theFile to readFile("/Users/anders/Desktop/test.txt")
set Shows to read theFile using delimiter return
repeat with nextLine in Shows
if length of nextLine is greater than 0 then
copy nextLine to the end of listOfShows
end if
end repeat
choose from list listOfShows
on readFile(unixPath)
set foo to (open for access (POSIX file unixPath))
set txt to (read foo for (get eof foo))
close access foo
return txt
end readFile
当我运行输出时,我得到了这个:
error "Can not change \"Game.of.Thrones-\\\"Game Of \" to type file." number -1700 from "Game.of.Thrones-\"Game Of " to file"
我的列表看起来像这样:Game.of.Thrones-“权力的游戏”和另外两行。
答案 0 :(得分:6)
错误在于您尝试读取文件的内容(您读取的第一个文件)作为文件。获取文本的段落会在返回/换行边界处将其分开,这通常比尝试猜测文件中使用的行尾字符更好。
在阅读文件时,您也不需要整个打开访问的东西,因此您的脚本可以简化为
set listOfShows to {}
set Shows to paragraphs of (read POSIX file "/Users/anders/Desktop/test.txt")
repeat with nextLine in Shows
if length of nextLine is greater than 0 then
copy nextLine to the end of listOfShows
end if
end repeat
choose from list listOfShows
答案 1 :(得分:2)
read
使用MacRoman,因此除非添加as «class utf8»
,否则它会在UTF-8文件中混乱非ASCII字符。 (as Unicode text
是UTF-16。)
paragraphs of (read POSIX file "/tmp/test.txt") as «class utf8»
paragraphs of
也适用于CRLF和CR行结尾。这不,但如果它是空的,它会忽略最后一行:
read POSIX file "/tmp/test.txt" as «class utf8» using delimiter linefeed
答案 2 :(得分:1)
set milefile to ((path to desktop as text) & "Alert.txt")
set theFileContents to (read file milefile)
display dialog theFileContents
答案 3 :(得分:0)
AppleScript的语言参考在第120页说明:
一系列字符,紧跟在前一段结尾之后的第一个字符或文本的开头之后,以回车字符(\ r),换行符(\ n),返回/换行符对结束(\ r \ n),或文本的结尾。不支持Unicode“段落分隔符”字符(U + 2029)。
因此,U + 8232被忽略,AppleScript从文件中返回整个文本......
U + 8232在TextEdit中用作CR字符......