【问题标题】:AppleScript: Transforming a TXT file in a listAppleScript:在列表中转换 TXT 文件
【发布时间】:2010-05-06 15:04:55
【问题描述】:

我有一个包含数字列表的 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”(我想这是第一个条目的前两个数字)。

发生了什么事?

谢谢。

【问题讨论】:

    标签: applescript


    【解决方案1】:

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

    尝试使用以下行:

    设置 myList 以使用分隔符“\n”读取 open_file

    看看它是否适合你。

    我尝试在我的笔记本电脑上运行您的脚本,并在上述修改后运行良好。

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

    【讨论】:

    • 谢谢,但它说这个分隔符“\n”无效。我用分隔符换行替换它,但问题仍然存在。我运行了 od 命令,它的编码和你的一样。
    • (续)... 我尝试过使用其他类型的 TXT 文件,在所有情况下,最终列表都只包含一个条目,即文件包含的第一个字符。具有 12345\n67890\n00000\n 的文件将包含一项“12”。
    • 如何查看列表?你可以发布它的代码sn-p吗?那里可能有问题。
    • 例如...显示对话框 myList 中的项目数给我 1 作为结果...在本例中应该是 5。另一个例子:显示对话框 myList 给我 97(从文件中读取的前两个字符)。
    • (续)..最奇怪的是我可以将分隔符更改为我想要的任何内容,即使是疯狂的字符,如 ASCII 字符 202,我也有相同的结果...... 97!!!
    【解决方案2】:

    文件听起来有些奇怪,但您是否尝试过另一种方法?

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

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

    【讨论】:

      【解决方案3】:

      read 命令的using delimiter(s) 参数有问题。请改用以下内容,它适用于任何换行符:

      set myList to every paragraph of (read open_file)
      

      【讨论】:

      • 谢谢,但是使用您的代码会导致 myList 只有一个条目,并且该条目对应于从文件中读取的前两个字符,相反...在这种情况下,myList 包含一个条目,即 79。
      • 在这种情况下,还有其他问题。我无法重现您的错误;当我尝试创建 file.txt 时,这个解决方案对我有用。我不确定什么可以帮助我们诊断这个问题——也许你将文件发布在某个地方?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 2017-05-07
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多