io - tool - ¿Cómo escribo en un archivo de texto usando AppleScript?
tag generator instagram (5)
Eso es todo. ¿Cómo puedo escribir en un archivo de texto usando AppleScript?
He intentado buscar en Google, pero las respuestas parecen tener años y no estoy realmente seguro de cuál debería ser el idioma preferido en estos días.
@Juananavarro.
Cuando use el shell, debe usar la forma entre comillas para el TEXTO y la ruta del archivo. Esto ayudará a detener los errores con espacios en los nombres de archivos y caracteres como apóstrofes en el texto, por ejemplo.
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
El script anterior funciona bien.
Si no tuviera una forma citada de algún texto.
pero en su lugar tenía & someText obtendría el siguiente error.
error "sh: -c: línea 0: EOF inesperado mientras buscaba coincidencias` ''''
sh: -c: línea 1: error de sintaxis: final inesperado del archivo "número 2
Los apóstrofes en " He " se ven como parte del comando.
Si tuviera
establezca textFile en "/ Users / USERNAME / Desktop / some foo.txt" como mi ruta de acceso al archivo (tenga en cuenta el espacio). Y no tenía la forma de TextFile citada, sino que tenía & textFile
Luego, cuando se escribiera el archivo, se escribiría en un archivo llamado " some " y no " some foo.txt "
Para mí, ejecutar do shell script era demasiado lento en un PowerBook G4 cuando se ejecutaba en un bucle 300000 veces;), pero por supuesto eso es más rápido de escribir, lo que a veces tiene sentido. También querrás escapar de los caracteres de shell como este:
do shell script "echo" y la forma citada de foobar & ">> some_file.txt"
y por razones estéticas usaría
dime que haga shell script "# ..."
pero aún no he verificado (lo que creo) que si "do shell script" está en un bloque de "tell Finder", por ejemplo, es el proceso Finder el que crea una subshell. Con "Dime que haga shell script" al menos el registro del Editor de secuencias de comandos se ve mejor para mí. ;)
También aprendí que un truco rápido, si uno solo quiere escupir un poco de texto a un archivo, es usar el shell.
do shell script "echo TEXT > some_file.txt"
Una versión corta en AppleScript puro:
set myFile to open for access (choose file name) with write permission
write "hello world" to myFile
close access myFile
Parece que no hay una solución nativa de comando. En su lugar tienes que abrir y luego cerrar el archivo.
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
Se puede limpiar la interfaz con los siguientes ...
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