一个macOS上用的swift文件脚本的模版:输入文件文本转换后输出到文件

news/2025/2/14 8:32:14/

本文介绍一种简单的swift脚本实现方案和执行方法。脚本可以读取文件内容,需要读者自行实现内容转换,然后脚本将结果输出到指定输出文件。

脚本模版

其中getResult函数需要读者按照自己需要实现。


import Foundationfinal class TestOnlySwift {//入参为输入文案,返回为输出文案,改这个函数实现就行了func getResult(str:String)->String {return str + "1"}//下面的可以不改func run(jsonFile: String, outputFile: String) {let pwd = shell("pwd")print("Working in \(pwd)")do {let jsonUrl = URL(fileURLWithPath: pwd).appendingPathComponent(jsonFile)guard FileManager.default.fileExists(atPath: jsonUrl.path) else {print("JSON file \(jsonUrl.path) does not exists!")exit(0)}let inputStr = try String(contentsOfFile: jsonUrl.path)let outputStr = getResult(str: inputStr)try outputStr.write(to: URL(fileURLWithPath: pwd).appendingPathComponent(outputFile), atomically: true, encoding: .utf8)print("Success")} catch {print("\(error)")}}@discardableResultfunc shell(_ command: String) -> String {let task = Process()let pipe = Pipe()task.standardOutput = pipetask.standardError = pipetask.arguments = ["-c", command]task.launchPath = "/bin/zsh"task.launch()let data = pipe.fileHandleForReading.readDataToEndOfFile()let output = String(data: data, encoding: .utf8)!return output.trimmingCharacters(in: .newlines)}}let namedArguments = UserDefaults.standard
guard let jsonFile = namedArguments.string(forKey: "i") else {print("Provide json crash file name with -i flag")exit(0)
}
guard let outputFile = namedArguments.string(forKey: "o") else {print("Provide output file name with -o flag")exit(0)
}
TestOnlySwift().run(jsonFile: jsonFile, outputFile: outputFile)

使用方式

把上面代码写到TestOnlySwift.swift文件中,跟输入文件放(inputFile)到一个目录,在终端如下执行命令,结果会放在outputFile。

swift TestOnlySwift.swift -i inputFile -o outputFile

http://www.ppmy.cn/news/1186860.html

相关文章

JAVA反射机制及动态代理

反射机制 反射机制是什么 1、Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后, 再通过class对象进行反编译,从而获取对象的各种信息。 2、Java属于先编译再运行的…

Java实现秒杀功能数据库设计架构设计实现步骤

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》作者 公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题、中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 转载说明:务必注明来源(注明:…

vue实现记事本(含样式)

实现增加、删除、全删、合计功能。 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport&q…

香橙派OrangePi Zero开发板的WiFi连接

文章目录 调试串口连接连接WIFI设置开机自动连接自定义设置固定IP地址远程SSH连接 调试串口连接 1、准备一个 3.3v 的USB转TTL的模块&#xff0c;将开发板连接到电脑上 注意&#xff1a;引脚连接 a. USB 转 TTL 模块的 GND 接到开发板的 GND 上b. USB 转 TTL 模块的 RX 接到开…

设计模式: 面向对象思想,软件设计原则与设计模式之间的关系

面向对象 我们知道一般编程思想有&#xff1a;面向过程&#xff0c;面向对象&#xff0c;面向切面编程&#xff0c;在软件开发中比重最大的就是面向对象编程了在面向对象中有一个"类"的概念&#xff0c;其实它就是模板面向对象的三要素&#xff1a;继承 封装 多态 继…

Java 中 replace()方法

1.定义 replace() 方法通过用 newChar 字符替换字符串中出现的所有 searchChar 字符&#xff0c;并返回替换后的新字符串。 2.语法 public String replace(char searchChar, char newChar) searchChar -- 原字符。 newChar -- 新字符。 3.返回值 返回值为一个新的字符串…

毕业设计基于SpringMVC+Mybatis+Bootstrap的电影院管理系统源码+数据库

<<电影院管理系统>> 电影院管理系统&#xff1a;SpringMVCJSPTomcatMybatisBootstrapJqueryAnimateCSSLayerJS 项目部署&#xff1a;该项目是IDEA版本&#xff0c;Maven项目 前端依赖&#xff1a; Bootstrap-3.4.1Animate.css- 4.1.1Jquery-3.6.0Layer-v3.5.1B…

时间序列预测大模型-TimeGPT

时间序列预测领域正在经历一个非常激动人心的时期。仅在过去的三年里&#xff0c;我们就看到了许多重要的贡献&#xff0c;例如N-BEATS、N-HiTS、PatchTST和TimesNet。 与此同时&#xff0c;大型语言模型 (LLM)最近在 ChatGPT 等应用程序中广受欢迎&#xff0c;因为它们无需进…