【问题标题】:Python: Read from command outputPython:从命令输出中读取
【发布时间】:2017-12-15 17:20:53
【问题描述】:

社区,

我希望能够将命令“isi nfs 导出列表”的输出读入脚本/程序。

然后,脚本/程序将使用输出中的数据来定位输出中的目录列表。

使用目录列表并为每一行运行 ls -lzed [DIRECTORYSTRING]。

此输出将使我能够收集每个目录的用户和组所有者是谁。

【问题讨论】:

  • 你试过像isi nfs exports list | python myprogram.py这样从标准输入获取数据
  • @theWanderer4865,这与将输出附加到文件“myprogram.py”相同吗?

标签: python command-line output ls


【解决方案1】:

您可以从 python 调用它并使用 `subprocess.check_output' check_output 将输出作为字符串获取:

>>> import subprocess
>>> subprocess.check_output(["echo", "Hello World!"])
    'Hello World!\n'

【讨论】:

  • 好吧,我还是新手,我还在努力研究这个编程的东西,以及如何让它对我成为系统管理员有用。所以请原谅我对我提出的问题的无知。我正在尝试根据您提供的内容来确定我的命令将在哪里输入?它会代替“Hello World!”吗? ?当我运行您提供的代码行时出现此错误: Traceback (most recent call last): File "", line 1, in subprocess.check_output(["echo", "Hello World !"]) NameError: name 'subprocess' is not defined
  • 检查编辑。您需要首先导入子流程模块。让我知道它是否仍然引发异常。
  • 这很尴尬...我仍然收到错误:回溯(最近一次调用最后一次):文件“C:\Users\hunt\AppData\Local\Programs\Python\Python36-32\test .py",第 2 行,在 subprocess.check_output(["echo", "Hello World!"]) 文件 "C:\Users\hunt\AppData\Local\Programs\Python\Python36-32\lib\ subprocess.py",第 336 行,在 check_output **kwargs).stdout ...
  • 试试subprocess.check_output(["echo", "Hello World!"], shell=True)
【解决方案2】:

您应该查看subprocess 模块。看一下名为check_output 的方法。它运行带有给定参数的命令,然后将其输出作为字节字符串返回。

文档中的一个示例:

>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n'

看起来正是您正在寻找的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    相关资源
    最近更新 更多