如何使用AppleScript写入文本文件?

时间:2010-09-23 17:28:16

标签: io applescript

所以,就是这样。如何使用AppleScript写入文本文件?

我试过谷歌搜索,但答案似乎已经好几年了,我不确定这几天应该是什么样的首选成语。

5 个答案:

答案 0 :(得分:22)

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

可以通过以下方式清除与它的接口......

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

答案 1 :(得分:9)

纯AppleScript中的简短版本:

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

似乎没有本机命令解决方案。相反,您必须打开并稍后关闭该文件。

答案 2 :(得分:8)

我还了解到,如果一个人只想向文件吐出一些文本,那么快速破解就是使用shell。

do shell script "echo TEXT > some_file.txt"

答案 3 :(得分:8)

@JuanANavarro。

使用shell时,您应该使用引用形式的作为TEXT和文件路径。 这将有助于阻止文件名中的空格和文本中的撇号等字符的错误,例如。

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

以上脚本运行正常。


如果我没有&引用形式的someText

但我有& someText 我会收到以下错误。

  

错误" sh:-c:第0行:在寻找匹配的“''

时意外的EOF      

sh:-c:第1行:语法错误:意外结束文件" 2号

" I' ve "被视为命令的一部分。


如果我有

将textFile设置为" / Users / USERNAME / Desktop / some foo.txt" 作为我的文件路径(注意空格。)并且没有&引用形式的textFile ,但我有&文本文件

然后当文件被写出时,它将写入名为" some "的文件。而不是" 一些foo.txt "

答案 4 :(得分:3)

对于我来说,运行do shell脚本在300万次循环执行时在PowerBook G4上太慢了;),但当然这更快写入有时是有道理的。您还希望转义shell字符,如下所示:

做shell脚本“echo”&报价形式的foobar& “>> some_file.txt”

出于审美原因,我会使用

告诉我做shell脚本“#...”

但是我还没有验证(我相信)如果“执行shell脚本”在“告诉Finder”的块中,例如它是创建子shell的Finder进程。用“告诉我做shell脚本”至少脚本编辑器日志对我来说更好看。 ;)