Jak zapisać plik tekstowy za pomocą AppleScript?

Więc to jest to. Jak Mogę zapisać plik tekstowy za pomocą AppleScript?

Próbowałem googlować, ale odpowiedzi wydają się mieć lata i nie jestem pewien, jaki powinien być preferowany idiom w dzisiejszych czasach.

Author: Juan A. Navarro, 2010-09-23

5 answers

on write_to_file(this_data, target_file, append_data) -- (string, file path as string, boolean)
    try
        set the target_file to the target_file as text
        set the open_target_file to ¬
            open for access file target_file with write permission
        if append_data is false then ¬
            set eof of the open_target_file to 0
        write this_data to the open_target_file starting at eof
        close access the open_target_file
        return true
    on error
        try
            close access file target_file
        end try
        return false
    end try
end write_to_file
[[2]}interfejs z nim można oczyścić za pomocą następujących...
my WriteLog("Once upon a time in Silicon Valley...")

on WriteLog(the_text)
    set this_story to the_text
    set this_file to (((path to desktop folder) as text) & "MY STORY")
    my write_to_file(this_story, this_file, true)
end WriteLog
 26
Author: Philip Regan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-23 17:38:56

Krótka wersja w czystym AppleScript:

set myFile to open for access (choose file name) with write permission
write "hello world" to myFile
close access myFile

Wygląda na to, że nie ma natywnego rozwiązania jednego polecenia. Zamiast tego musisz otworzyć, a później zamknąć plik.

 11
Author: flori,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-06 13:32:52

@JuanANavarro.

Podczas używania powłoki powinieneś użyć cytowanej formy dla tekstu i ścieżki do pliku. Pomoże to zatrzymać błędy ze spacjami w nazwach plików i znakach, takich jak apostrofy w tekście na przykład.

set someText to "I've also learned that a quick hack, if one only wants to spit a bit of text to a file, is to use the shell."

set textFile to "/Users/USERNAME/Desktop/foo.txt"
do shell script "echo  " & quoted form of someText & " >  " & quoted form of textFile

Powyższy skrypt działa dobrze.


If I didn ' t have & quoted form of someText

Ale zamiast tego miałem & someText otrzymałbym następujący błąd.

Error " Sh: - C: line 0: unexpected EOF while Szukam dopasowania "'

Sh: -C: linia 1: Błąd składni: nieoczekiwany koniec pliku " numer 2

Apostrofy w " I 've" są postrzegane jako część polecenia.


If I had

Ustaw plik tekstowy na " / Users / USERNAME / Desktop / some foo.txt " jako Moja ścieżka do pliku (zwróć uwagę na spację.) I nie miałem & quoted form of textFile ale zamiast tego miałem & textFile

Wtedy po zapisaniu pliku zapisywałby się do pliku o nazwie " some "and not" some foo.txt "

 9
Author: markhunte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Nauczyłem się również, że szybkie włamanie, jeśli ktoś chce tylko pluć trochę tekstu do pliku, polega na użyciu powłoki.

do shell script "echo TEXT > some_file.txt"
 8
Author: Juan A. Navarro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-27 08:33:34

Dla mnie uruchamianie skryptu do shell było zbyt wolne na Powerbooku G4 po wykonaniu w pętli 300000 razy;), ale oczywiście szybsze pisanie co czasem ma sens. Chciałbyś także uciec od takich postaci powłoki:

Wykonaj skrypt powłoki "echo" & quoted form of foobar & " > > some_file.txt "

I ze względów estetycznych użyłbym

Tell me to do shell script"#..."

Ale jeszcze nie zweryfikowałem (w co wierzę) , że jeśli "do Shell script" jest w blok "tell Finder" na przykład jest to proces Findera, który tworzy podshell. Z "tell me to do shell script" przynajmniej Dziennik Edytora Skryptów wygląda dla mnie lepiej. ;)

 3
Author: Zygmunt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-07 01:42:17