AppleScript: управление строками и файлами - PullRequest
0 голосов
/ 09 января 2012

После сбора списка файлов с помощью скрипта mdfind () мне теперь нужно скопировать каждый из найденных файлов, а также сохранить их исходные пути для дальнейшего использования.По сути, мне нужно переместить огромное и широко распространенное количество старых файлов AppleWorks на новый том, вручную обновить их, а затем заменить оригинальные файлы новыми, обновленными версиями в тех же местах и ​​с теми же именами файлов * 1002.* (но не расширения или тип документа).

Поскольку я новичок в AppleScript, я занимаюсь манипулированием файлами с помощью Python и использую только AppleScript для поиска документов (так как расширения файлов не хватит для моих целейМне нужно посмотреть на метатеги яблок через mdfind).

Но документ, который я могу создать с помощью AppleScript - список путей к файлам - использует разделитель новой строки apple "\ r", и, следовательно, я не могу легко импортировать его в python.

Мой Apple Script:

set the_script to "mdfind   kMDItemKind=='*AppleWorks*'"
set the_text to (do shell script the_script)
set the_doc to (choose file)
write the_text to the_doc

, который создает файл .txt со всеми видами прекрасных имен путей, но python читает его как одну огромную строку.

Как сделатьЯ либо

a) приказываю Apple Script добавить собственный разделитель в каждую строку (т. Е. "\ N")

или

b) как мне сообщить Apple Scriptскопировать каждый найденный файл в новое место, сохранив исходные файлы и записав их пути?

Любая помощь будет высоко ценится.

ОБНОВЛЕНИЕ @ Kindall

Это ошибка, которую выдает Python, когда я пытаюсь передать в команду mdfind:

 File "<stdin>", line 1, in <module>
 File     "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
 File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1228, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

Есть идеи?Я в первую очередь веб-разработчик, пытающийся пробиться через некоторые другие языки, чтобы избежать ручной сортировки файлов 2-3k на моем старом ноутбуке Mac, ха-ха (и я исправил опечатки в вашем исходном коде, я не пытаюсьзапусти дословно).

Ответы [ 3 ]

2 голосов
/ 09 января 2012

Как насчет (d): сделать mdfind в Python?

import subprocess

command = "mdfind kMDItemKind=='*AppleWorks*'"
subpipe = subprocess.Popen(command, stdout=subprocess.PIPE)
outlist = subpipe.communicate()[0].splitlines()

for filename in outlist:
    print filename    # or whatever

Примечание: на самом деле я сейчас не на Mac, но у меня с Windows и * это работало нормально1005 * comamand, поэтому он должен нормально работать на Mac с mdfind.

2 голосов
/ 09 января 2012

Как насчет (c): разделить содержимое файла на '\ r' после того, как вы прочитали его с помощью Python?

0 голосов
/ 10 января 2012

Используя советы Киндалла, я и некоторые ребята из моей лаборатории собрали решение, которое хорошо работает с Apple, но полностью использует python:

import os
import subprocess

outfile = os.open("test",os.O_CREAT)
os.close(outfile)
outfile = os.open("test",os.O_RDWR)
command = ["mdfind","kMDItemKind == '*AppleWorks*'"]
subpipe = subprocess.Popen(command, stdout=outfile)

Который создает текстовый файл в каталоге, из которого запускается скрипт. Спасибо разнообразный совет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...