我真的很难找到如何使用OS X Automation使用Javascript将文本文件读入数组的文档。
这是我到目前为止所拥有的:
var app = Application.currentApplication();
app.includeStandardAdditions = true;
var myFile = "/Users/Me/Dropbox/textfile.txt";
var openedFile = app.openForAccess(myfile, { writePermission: true });
var myText = openedFile.??
app.closeAccess(URLFile);
我从Apple官方文档中复制了大部分内容。我发现在网上找到文档真的很难。例如,openForAccess的参数是什么?在任何字典中都没有任何描述该方法的东西。
我是否在JXA上浪费时间?
答案 0 :(得分:1)
一些通用功能和说明性测试:
(function () {
'use strict';
// GENERIC FUNCTIONS ------------------------------------------------------
// doesFileExist :: String -> Bool
function doesFileExist(strPath) {
var error = $();
return $.NSFileManager.defaultManager
.attributesOfItemAtPathError($(strPath)
.stringByStandardizingPath, error), error.code === undefined;
};
// lines :: String -> [String]
function lines(s) {
return s.split(/[\r\n]/);
};
// readFile :: FilePath -> maybe String
function readFile(strPath) {
var error = $(),
str = ObjC.unwrap(
$.NSString.stringWithContentsOfFileEncodingError($(strPath)
.stringByStandardizingPath, $.NSUTF8StringEncoding, error)
),
blnValid = typeof error.code !== 'string';
return {
nothing: !blnValid,
just: blnValid ? str : undefined,
error: blnValid ? '' : error.code
};
};
// show :: a -> String
function show(x) {
return JSON.stringify(x, null, 2);
};
// TEST -------------------------------------------------------------------
var strPath = '~/DeskTop/tree.txt';
return doesFileExist(strPath) ? function () {
var dctMaybe = readFile(strPath);
return dctMaybe.nothing ? dctMaybe.error : show(lines(dctMaybe.just));
}() : 'File not found:\n\t' + strPath;
})();
答案 1 :(得分:0)
Apple已an entire page致力于在“Mac自动化脚本编制指南”中读取和写入文件。这包括一个完全执行您要查找的操作的功能。我使用Apple指南中的def find_word(word, word_list):
try:
return word_list.index(word)
except ValueError:
return None # or what ever you need
>>> word_list = ['bubble', 'lizzard', 'fish']
>>> find_word('lizzard', word_list)
1
>>> print(find_word('blizzard', word_list))
None
函数重写了下面的示例:
readAndSplitFile
运行上面的代码后,var app = Application.currentApplication()
app.includeStandardAdditions = true
function readAndSplitFile(file, delimiter) {
// Convert the file to a string
var fileString = file.toString()
// Read the file using a specific delimiter and return the results
return app.read(Path(fileString), { usingDelimiter: delimiter })
}
var fileContentsArray = readAndSplitFile('/Users/Me/Dropbox/textfile.txt', '\n')
将保存一个字符串数组,每个字符串包含一行文件。 (您也可以使用fileContentsArray
作为分隔符,以便在每个标签或您选择的任何其他字符处中断。)