2010-05-06 33 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