启动自己的termianl工具作为命令的参数

时间:2018-05-17 15:45:51

标签: python linux shell terminal command

我目前正在开发一种分析命令输出的终端工具。 我在python中编写工具。 现在我想在每个命令中启动我的工具作为参数,例如:python program.py -analyse

在这种情况下,python program.py是命令,我想用参数anaylse.py启动我自己的项目-analyse,该参数分析项目的输出并将自己的输出写入一份文件。现在我的问题是:

如何从参数analyse.py启动我自己的程序-analyse,如何捕获并阅读python program.py的输出?

2 个答案:

答案 0 :(得分:0)

添加-analyse作为参数会将其传递给program.py。我认为这不是你想要的。我想你正在寻找python program.py | python analyse.py。然后只需读取stdin的输出。

#!/usr/bin/python扔在analyse.py的顶部,并将权限更改为可执行文件,使其更简单:python program.py | analyse.py

答案 1 :(得分:0)

argparse是用于处理命令行参数的标准库模块。我建议您按以下方式构建脚本参数:

选择一个字符,例如 class Stopwatch: NSObject { private static var watches = [String:TimeInterval]() private static func intervalFromMachTime(time: TimeInterval, useNanos: Bool) -> TimeInterval { var info = mach_timebase_info() guard mach_timebase_info(&info) == KERN_SUCCESS else { return -1 } let currentTime = mach_absolute_time() let nanos = currentTime * UInt64(info.numer) / UInt64(info.denom) if useNanos { return (TimeInterval(nanos) - time) } else { return (TimeInterval(nanos) - time) / TimeInterval(NSEC_PER_MSEC) } } static func start(name: String) { var info = mach_timebase_info() guard mach_timebase_info(&info) == KERN_SUCCESS else { return } let currentTime = mach_absolute_time() let nanos = currentTime * UInt64(info.numer) / UInt64(info.denom) watches[name] = TimeInterval(nanos) } static func timeElapsed(name: String) { return timeElapsed(name: name, useNanos: false) } static func timeElapsed(name: String, useNanos: Bool) { if let start = watches[name] { let unit = useNanos ? "nanos" : "ms" print("*** \(name) elapsed \(unit): \(intervalFromMachTime(time: start, useNanos: useNanos))") } } ,以指明您希望通过工具运行的脚本的名称。这将通过以下方式调用:

f

然后你可以使用python program.py -f analyse.py简单地执行argparse参数之后指定的文件,并对输出做任何你想做的事。