【问题标题】:python os.system() not running with my permissions?python os.system() 没有以我的权限运行?
【发布时间】:2012-10-30 03:53:14
【问题描述】:

我正在尝试使用 os.system("grep 'regex' /path/to/file.log") 对文件进行 grep。我知道正则表达式是正确的,并且在从 shell 运行时该命令有效,但是一旦我尝试运行脚本,我就会收到以下错误:

sh: /path/to/file.log: Permission denied

os 模块不是在我的权限下运行吗?另外,有没有更好的方法来做到这一点?我需要在超过 40,000 行的文件中找到特定的行。

谢谢!

【问题讨论】:

  • 您可以尝试os.system("id -a") 来查看它的运行情况,但请注意,除非您非常确定转义规则,否则通常不应使用os.system对于它运行的任何 shell — subprocess.check_call 更好。
  • 请注意,错误消息以sh: 开头,而不是grep:。如果我尝试 grep 通过一个我没有读取权限的文件,我会得到grep: path.to.log: Permission denied。我觉得你的正则表达式(可能是路径,尽管可能性较小)被不正确地转义,所以 /path/to/file.log 正试图被执行。

标签: python security permissions grep os.system


【解决方案1】:

使用 Python 的内置正则表达式模块 re 可能更容易做到这一点,而不是使用 grep

import re

with open(filename, 'r') as f:
    for line in f:
        if re.search(regex, line):
            print line,

我知道这并不能直接回答问题,但它可能是解决潜在问题的正确方法。我认为这属于“有没有更好的方法来做到这一点?”你的问题的一部分。

【讨论】:

    猜你喜欢
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2011-08-01
    相关资源
    最近更新 更多