【问题标题】:grep command from python来自python的grep命令
【发布时间】:2017-07-14 00:06:13
【问题描述】:

我在 shell 中使用了 grep 命令,它给出了我想要的结果,但是当我使用 os.popen 从我的 python 脚本运行时,它说

grep: SUMMARY:: No such file or directory

普通的grep命令:

grep -A 12 -i "LOGBOOK SUMMARY:" my_folder/logbook.log

Python 脚本

command="grep -A 12 -i LOGBOOK SUMMARY: my_folder/logbook.log"
result=os.popen(command)

普通的 grep 命令给出了我想要的结果。 第二个说没有这样的文件或目录

【问题讨论】:

  • 使用文件的完整路径

标签: python shell unix grep


【解决方案1】:

您需要用引号将搜索模式括起来:

command="grep -A 12 -i 'LOGBOOK SUMMARY:' my_folder/logbook.log"

如何诊断此类问题?从错误信息开始:​​

grep: SUMMARY:: No such file or directory

此错误消息表明grep 找不到名为SUMMARY: 的文件。

要问的正确问题是,为什么grep 寻找一个名为SUMMARY: 的文件? 答案是在你执行的命令行上, 不知何故,SUMMARY: 被认为是一个文件名:

command="grep -A 12 -i LOGBOOK SUMMARY: my_folder/logbook.log"

当然!如果您在 shell 中执行该命令,就会发生这种情况:

grep -A 12 -i LOGBOOK SUMMARY: my_folder/logbook.log

在这里,shell 将在空格处分割命令行, 并传递给grep 3 个参数,LOGBOOKSUMMARY:my_folder/logbook.log。 第一个参数LOGBOOK 用作要搜索的模式, 并将所有剩余的参数作为文件名进行搜索。

【讨论】:

  • 非常感谢。通常人们会给出解决方案,但会按照您解释的方式。太棒了!
猜你喜欢
  • 2012-05-04
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多