2012-04-08 42 views
5

テキストファイルを読み込んで内容をリストに入れるAppleScriptを作成しようとしました。このファイルはすべての行が次のような単純なテキストファイルです。example-"example"AppleScriptのリストにテキストファイルを読み込む

最初はファイル名で、もう1つはフォルダ名です。ここで

は今私のコードです:

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 

私はこれを取得、出力することを実行すると:魂のGame.of.Thrones-「ゲーム:

error "Can not change \"Game.of.Thrones-\\\"Game Of \" to type file." number -1700 from "Game.of.Thrones-\"Game Of " to file" 

マイリストはこのようになります"とそのような2行があります。

答えて

5

エラーは、ファイルとしてファイル(あなたが読んで最初のファイル)内容を読み取ろうとしているということです。テキストの段落を取得すると、ファイル内で使用されていた行末文字が何であるかを推測しようとするよりも、通常はリターン/改行境界で分割されます。

だけのファイルを読み込むときにスクリプトがちょうど

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 
+0

ファイルからテキスト全体を...返します.of.Thrones - \ "Game Of"の出力で、私は今何のエラーも出ません。 – andeersg

+0

テキストで試してみました:1text、2text ... 5textのテキストファイルで結果は1text、2text、3textです、4text、5 not 5text – andeersg

+0

スクリプトは、ファイルの各行を取得して(リターンなどの改行文字で区切って)リストに入れます。あなたが尋ねたところで?区切り文字や読み込まれた文字数で遊んでいない限り、ファイルが完全に読み込まれない理由はわかりません。 –

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 
0
のAppleScriptの言語リファレンスが120ページに述べ

終了後の最初の文字のいずれかの直後から始まる一連の文字(\ r)、改行文字(\ n)、改行/改行ペア(\ r \ n)、またはテキストの末尾のいずれかで終了します。 Unicodeの「段落区切り記号」文字(U + 2029)はサポートされていません。

ので、U + 8232は無視され、AppleScriptはそれはまだ唯一の「ゲームを読み込む+ 8232 UはCR文字としてテキストエディットで使用されている

...

1
set milefile to ((path to desktop as text) & "Alert.txt") 
set theFileContents to (read file milefile) 
display dialog theFileContents 
+0

このコードは質問に答えるかもしれませんが、_why_および/または_how_に関する追加のコンテキストを に追加すると、 と回答すると、その質問は長期的には の値が大幅に改善されます。あなたの答えを[編集]して、説明を加えてください。 –

関連する問題