AppleScript: преобразование файла TXT в список - PullRequest
1 голос
/ 06 мая 2010

У меня есть простой текстовый файл со списком чисел. Одно число в строке, например:

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, который был создан и сохранен в TextEdit с использованием западной (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» (я полагаю, это первые два числа первой записи).

Что происходит?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 06 мая 2010

Если вы сохранили ваш файл как Western (ISO Latin 1), скорее всего, он имеет LF в качестве разделителя.

Попробуйте использовать следующую строку:

установить myList для чтения open_file, используя разделитель "\ n"

и посмотрите, работает ли он для вас.

Я попытался запустить ваш скрипт на моем ноутбуке, и он отлично работает с вышеуказанными модификациями.

Кроме того, запустите команду 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
1 голос
/ 07 мая 2010

Похоже, что-то странное происходит с файлом, но вы пробовали другой подход?

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

Программа cat просто печатает содержимое файла.

1 голос
/ 06 мая 2010

Параметр read команды *1001* проблематичен. Вместо этого используйте следующее, которое работает с любыми символами перевода строки:

set myList to every paragraph of (read open_file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...