将linux命令转换为Python 3.5.2

时间:2016-10-04 15:49:10

标签: linux python-3.x grep

嘿伙计我有一个问题,在我的linux中我通常grep文件中的东西和打印输出或打印计数,我怎么能在python脚本中做同样的事情。 例如

Linux Command : grep name filename.txt | wc -l

Python 3.5.2 Command : os.system("grep name filename.txt | wc -l")

这给了我linux命令的确切结果,但我需要将它存储在变量中,然后打印如何实现它。 在此先感谢。

2 个答案:

答案 0 :(得分:0)

您不需要调用外部程序,这将完成您的命令:

import re

pattern = re.compile('name')
with open('filename.txt') as f:
    count = sum(bool(pattern.search(line)) for line in f)
print(count)

答案 1 :(得分:0)

考虑:

command1 : grep name filename.txt 
command2 : wc -l

命令1的输出将成为命令2的输入

python的语法:

first_output = subprocess.Popen(command 1, shell=True, stdout=subprocess.PIPE)
second_output = subprocess.Popen(command 2,stdin=first_output.stdout,stdout=subprocess.PIPE)
out, err = second_output.communicate()

示例-

p1 = subprocess.Popen("grep name filename.txt", shell=True, stdout=subprocess.PIPE)
p2 = subprocess.Popen("wc -l",stdin=p1.stdout,stdout=subprocess.PIPE)
out, err = p2.communicate()
  • out-以文本格式输出p2
  • err-错误日志(如果有)