【发布时间】: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