2010-05-06 70 views
1

我有一个包含数字列表的txt纯文件。每行一个数字,比如: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 Latin 1)编码保存在文本编辑。

现在我正在尝试使用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”(我想这是第一个条目的前两个数字)。

这是怎么回事?

谢谢。

回答

1

这听起来像一些奇怪的是怎么回事的文件,但你尝试另一种方法:

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

猫程序只是输出文件的内容。即使我不行,它可能会让你知道发生了什么。

1

如果您将文件保存为西文(ISO拉丁文1),则最有可能将LF用作分隔符。

尝试使用以下行:

集myList中读取OPEN_FILE使用分隔符 “\ n”

,看看它是否适合你。

我试着在我的笔记本电脑上运行你的脚本,它可以很好地适应上述修改。

另外,在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 
+0

谢谢,但它说这个分隔符“\ n”是无效的。我将其替换为 分隔符换行符,但问题仍然存在。我运行了od命令,它和你的编码一样。 – SpaceDog 2010-05-06 15:42:55

+0

(续)...我尝试了其他类型的TXT文件,并且在所有情况下,最终列表只包含一个条目,即该文件包含的第一个字符。包含12345 \ n67890 \ n00000 \ n的文件将包含一个“12”的项目。 – SpaceDog 2010-05-06 15:59:37

+0

你如何查看列表?你能发布它的代码片段吗?那里可能有问题。例如 – Vlad 2010-05-06 16:28:20

1

read命令的参数using delimiter(s)是有问题的。改用以下,这与任何换行符(S)工作原理:

set myList to every paragraph of (read open_file) 
+0

谢谢,但使用您的代码结果有myList只有一个条目,并且该条目对应于从文件中读取的前两个字符,反转...在这种情况下,myList包含一个条目是79. – SpaceDog 2010-05-06 19:22:49

+0

在这种情况下,是问题。我无法重现您的错误;当我尝试创建一个file.txt时,这个解决方案为我工作。我不知道什么可以帮助我们诊断这个---也许如果你把文件发布到某个地方? – 2010-05-07 03:39:59