在Python中搜索线条
问题描述:
我想将Bash脚本转换为Python进行培训。在bash脚本通过ssh查询其DF远程主机和搜索特定的字段返回的行,像这样:在Python中搜索线条
ssh $_host df 2>/dev/null | grep -i $_filesystem | grep :
在Python中,我结合使用subprocess.call
与shlex.split
获得“DF”输出:
_cmd = shlex.split("ssh %s df 2>/dev/null" % _host)
_test = subprocess.check_output(_cmd)
这里,_test收益类型字符串,如果我想搜索这行线,它打印出的每个字符作为新行。 subprocess.Popen
对于管道也不起作用。我想要做的就是打印出找到我的搜索字符串的行,以便进一步格式化。
我已经看到了几个接近解决方案的尝试,但其中大多数尝试通过具有已定义的回车符的文件进行迭代,而不是通过子进程调用返回的字符串。
答
除非我误解了你的叙述,否则问题在于你重复字符串_test
(在你没有显示的代码中)。这一次迭代一个字符。所以,你只需要编写
_test = _test.split("\n")
把_test
成线的列表,当你迭代它,你会得到线,而不是单个字符。
Bash是一个特定领域的语言,专门设计用于与进程交互。 Python是一种能够做任何事情的通用语言。我希望看到你在shell脚本中编写一个web服务器。 –
感谢您澄清,尽管它根本没有帮助。 –
“正确”的做法是导入可以处理'ssh'的东西。我推荐'fabric'(google:“python fabric”)。目前你只是从python调用ssh可执行文件,而不是如何做(通常)。鉴于你在bash中的背景是可以理解的,但不像bash python更喜欢使用**库**,而不是**可执行文件**。 –