苹果Automator处理csv文件并创建新文件

1 投票
1 回答
2179 浏览
提问于 2025-04-16 08:26

可以用Apple Automator来循环处理一组选中的文件吗?每个文件处理完后再保存成新的文件?

我有一堆.xls格式的文件,我已经让Automator完成了

- Ask for Finder Items
- Open Finder Items
- Convert Format of Excel Files #save each .xls file to a .csv

我写了一个Python脚本,这个脚本可以接收一个文件名作为参数,处理这个文件,然后把处理后的结果保存为p_filename,保存在运行这个脚本的目录下。我想用Run Shell Script这个功能,调用/usr/bin/python的命令,并把我的Python脚本粘贴进去。

不过,有些东西不太好用,尤其是我不太确定它是怎么处理Python的open('filename','w')命令的。可能它没有权限去创建新文件,或者我输入的命令不对。我想到了一个办法,就是把处理后的文件输出为文本,先用Automator捕捉到这个文本,然后再保存成新文件。

为此,我尝试使用New Text File,但是我无法让它为每一个最开始选中的文件创建一个新的文本文件。请问可以循环处理所有选中的Finder项目吗?

1 个回答

1

你为什么想在脚本所在的文件夹里完成这个操作?还是说你是指从Finder中获取的文件所在的文件夹?如果是这样的话,你只需要获取每个传入Python的文件的路径就可以了。

当你运行open('filename','w')时,应该传入一个完整的文件路径。可能发生的情况是,你实际上是在根目录下写入,而不是你想象中的那个地方。

假设你是把文件作为参数传递给Automator中的shell命令,那么你可能会有以下内容:

import sys, os

args = sys.argv[1:]
for a in args:
    p = os.path.dirname(a)
    mypath = p + "/" + name
    f = open(mypath, "w") 

撰写回答