AppleScript:转换列表中的TXT文件

AppleScript:转换列表中的TXT文件,applescript,Applescript,我有一个包含数字列表的txt普通文件。每行一个数字,如: 978-972-722-649-8 978-972-722-646-7 978-972-722-627-6 978-972-722-625-2 978-972-722-594-1 等等 此列表位于名为file.txt的文件中,该文件是使用西方(ISO拉丁语1)编码创建并保存在TextEdit上的 现在我尝试使用Applescript读取此文件并将其转换为列表 我有这个剧本 set myDirectory to path to deskt

我有一个包含数字列表的txt普通文件。每行一个数字,如:

978-972-722-649-8
978-972-722-646-7
978-972-722-627-6
978-972-722-625-2
978-972-722-594-1
等等

此列表位于名为file.txt的文件中,该文件是使用西方(ISO拉丁语1)编码创建并保存在TextEdit上的

现在我尝试使用Applescript读取此文件并将其转换为列表

我有这个剧本

set myDirectory to path to desktop folder as string
set myFile to myDirectory & "file.txt"

try
    set open_file to ¬
        open for access file myFile without write permission
    set myList to read open_file using delimiter return
    close access open_file
on error
    try
        close access file open_file
    end try
end try
运行此脚本后,myList只包含一项,该项为“97”(我想这是第一个条目的前两个数字)

发生了什么事


谢谢。

如果您将文件保存为Western(ISO Latin 1),则很可能将LF作为分隔符

尝试使用以下行:

将myList设置为使用分隔符“\n”读取打开的\u文件

看看它是否对你有用

我试着在我的笔记本电脑上运行你的脚本,经过上面的修改,它工作得很好

另外,在shell中运行od命令,查看文件的编码是否正确。以下是我的命令的输出:

vlad$ od -c file.txt 
0000000    9   7   8   -   9   7   2   -   7   2   2   -   6   4   9   -
0000020    8  \n   9   7   8   -   9   7   2   -   7   2   2   -   6   4
0000040    6   -   7  \n   9   7   8   -   9   7   2   -   7   2   2   -
0000060    6   2   7   -   6  \n   9   7   8   -   9   7   2   -   7   2
0000100    2   -   6   2   5   -   2  \n   9   7   8   -   9   7   2   -
0000120    7   2   2   -   5   9   4   -   1  \n                        
0000132

如果您将文件另存为Western(ISO Latin 1),则很可能将LF作为分隔符

尝试使用以下行:

将myList设置为使用分隔符“\n”读取打开的\u文件

看看它是否对你有用

我试着在我的笔记本电脑上运行你的脚本,经过上面的修改,它工作得很好

另外,在shell中运行od命令,查看文件的编码是否正确。以下是我的命令的输出:

vlad$ od -c file.txt 
0000000    9   7   8   -   9   7   2   -   7   2   2   -   6   4   9   -
0000020    8  \n   9   7   8   -   9   7   2   -   7   2   2   -   6   4
0000040    6   -   7  \n   9   7   8   -   9   7   2   -   7   2   2   -
0000060    6   2   7   -   6  \n   9   7   8   -   9   7   2   -   7   2
0000100    2   -   6   2   5   -   2  \n   9   7   8   -   9   7   2   -
0000120    7   2   2   -   5   9   4   -   1  \n                        
0000132

read
命令的
使用分隔符
参数有问题。改为使用以下适用于任何换行符的换行符:


read
命令的
使用分隔符
参数有问题。改为使用以下适用于任何换行符的换行符:


听起来这个文件有点奇怪,但是你试过其他方法吗

set myfilePPath to posix path of myFile
set myList to every paragraph of (do shell script("cat \"" & myfilePPath & "\""))

猫程序只是把文件的内容打印出来。

听起来文件有点奇怪,但是你试过其他方法吗

set myfilePPath to posix path of myFile
set myList to every paragraph of (do shell script("cat \"" & myfilePPath & "\""))

cat程序只是键入文件的内容。

谢谢,但是它说这个分隔符“\n”无效。我将其替换为分隔符换行符,但问题仍然存在。我运行了od命令,它的编码和你的一样。(续)。。。我尝试过其他类型的TXT文件,在所有情况下,最终列表只包含一个条目,即文件包含的第一个字符。带有12345\n67890\n00000\n的文件将包含一个“12”项。如何检查列表?你能发布它的代码片段吗?那里可能有问题。例如。。。“显示”对话框myList中的项目数为1,结果。。。在这个例子中应该是5。另一个示例:显示对话框myList为我提供97(从文件读取的前两个字符)。(续)。。最奇怪的是,我可以将分隔符更改为我想要的任何字符,甚至是疯狂的字符,如ASCII字符202,我得到了相同的结果。。。97!!!谢谢,但是它说这个分隔符“\n”无效。我将其替换为分隔符换行符,但问题仍然存在。我运行了od命令,它的编码和你的一样。(续)。。。我尝试过其他类型的TXT文件,在所有情况下,最终列表只包含一个条目,即文件包含的第一个字符。带有12345\n67890\n00000\n的文件将包含一个“12”项。如何检查列表?你能发布它的代码片段吗?那里可能有问题。例如。。。“显示”对话框myList中的项目数为1,结果。。。在这个例子中应该是5。另一个示例:显示对话框myList为我提供97(从文件读取的前两个字符)。(续)。。最奇怪的是,我可以将分隔符更改为我想要的任何字符,甚至是疯狂的字符,如ASCII字符202,我得到了相同的结果。。。97!!!谢谢,但使用您的代码会导致myList只包含一个条目,并且该条目对应于从文件中读取的前两个字符,颠倒。。。在本例中,myList包含一个79的条目。在这种情况下,问题出在其他方面。我不能复制你的错误;当我尝试创建一个file.txt时,这个解决方案对我有效。我不知道有什么可以帮助我们诊断这个问题——也许如果你把文件发布到某个地方?谢谢,但使用你的代码,我的列表只有一个条目,而该条目对应于从文件中读取的前两个字符,颠倒了。。。在本例中,myList包含一个79的条目。在这种情况下,问题出在其他方面。我不能复制你的错误;当我尝试创建一个file.txt时,这个解决方案对我有效。我不确定有什么可以帮助我们诊断这个问题——也许如果你把文件贴在什么地方?