我试图弄清楚如何发送shell命令,搜索一行中的字符串,并打印x行数。如果我使用open读取文件,但在通过shell读取文件时遇到困难,我就能够做到这一点。我希望能够发送一个shell命令并使用类似的grep -A命令。有什么毕达通的方法吗?下面是我的可测试代码。提前谢谢。
我的守则:
#!/usr/bin/python3
import subprocess
# Works when I use open to read the file:
with open("test_file.txt", "r") as myfile:
for items in myfile:
if 'Cherry' in items.strip():
for index in range(5):
line = next(myfile)
print (line.strip())
# Fails when I try to send the command through the shell
command = (subprocess.check_output(['cat', 'test_file.txt'], shell=False).decode('utf-8').splitlines())
for items in command:
if 'Cherry' in items.strip():
for index in range(5):
line = next(command)输出错误:
Dragonfruit
--- Fruits ---
Artichoke
Arugula
------------------------------------------------------------------------------------------
Traceback (most recent call last):
File "/media/next_line.py", line 26, in <module>
line = next(command)
TypeError: 'list' object is not an iterator
Process finished with exit code 1Test_file.txt的内容:
--- Fruits ---
Apple
Banana
Blueberry
Cherry
Dragonfruit
--- Fruits ---
Artichoke
Arugula
Asparagus
Broccoli
Cabbage发布于 2016-11-10 16:39:05
自己做迭代器,而不是让for为你做.(可能有用,也可能不起作用,我没有确切地测试这个)
command = (subprocess.check_output(['cat', 'test_file.txt'], shell=False).decode('utf-8').splitlines())
iterator = iter(command)
for items in iterator:
if 'Cherry' in items.strip():
for index in range(5):
line = next(iterator)https://stackoverflow.com/questions/40532584
复制相似问题