用于shell命令的Python模块

用于shell命令的Python模块,python,bash,Python,Bash,我有一个bash脚本,它开始跨越灰色地带,可能应该用脚本语言重写。因为我一直在调整脚本,所以bash是完美的,因为它非常简洁。我主要是操纵一个程序的输出,将其放入另一个程序(即使用cat、grep、sed、tail、head)。我熟悉Python,所以我正在寻找一个基本上可以执行这些命令的模块。我发现了一些使用子进程调用bash命令的东西,但我不想要bash命令的包装器。我还意识到,如果我将这些命令全部封装到一个类中,我可以花时间用python编写大多数命令,甚至可以相当轻松地将它们链接起来。这

我有一个bash脚本,它开始跨越灰色地带,可能应该用脚本语言重写。因为我一直在调整脚本,所以bash是完美的,因为它非常简洁。我主要是操纵一个程序的输出,将其放入另一个程序(即使用cat、grep、sed、tail、head)。我熟悉Python,所以我正在寻找一个基本上可以执行这些命令的模块。我发现了一些使用子进程调用bash命令的东西,但我不想要bash命令的包装器。我还意识到,如果我将这些命令全部封装到一个类中,我可以花时间用python编写大多数命令,甚至可以相当轻松地将它们链接起来。这似乎是一件很明显的事情,尽管我很难相信这些实用程序在已经存在的模块中不存在。

您可以使用python中的
os
模块来执行命令,就像在命令shell中一样

例如,如果您有一个名为“junk.txt”的文件,并且希望对其使用“head”命令,那么您可以在shell中编写
head junk.txt

在Python中,它是

import os
os.system("head junk.txt")

如果您想做的基本上是运行bash命令,那么最好继续使用shell脚本。相反,您最好学习如何在Python中执行操作,而不是派生一个新进程来运行简单的程序。像
subprocess
这样的操作有助于运行“重量级”程序(
vim
、图形编辑器、游戏等)在Python中重新实现它的功能最多是不平凡的。根据您正在做的事情,标准库中的
shutil
模块可能会很有用。但是,我不建议您尝试将bash逐行翻译为Python。相反,您应该返回到脚本的原始规范,并在n python。那是什么?没有规范?好吧,然后写一个,使其抽象且语言中立。不要被shell脚本跟踪。一旦你做了一些类似的事情,它将成为第二天性,你就不想再看bash了。你问为什么这样的模块不存在。我曾经尝试过用Perl编写shell(抱歉,那是很久以前的)实用程序。但它是垃圾输入/垃圾输出。我发现大多数需要转换的shell脚本编写得非常糟糕,以至于生成了糟糕的Perl。Python(和Perl)脚本速度更快的一个原因是人们更加注意编写它们(只有一个原因)。我放弃了转换项目。
os.system()
已被弃用,并由
子流程
模块替换。