在python中,在同一文件上执行多个终端命令并保存所有更改一次

时间:2015-10-08 15:19:25

标签: python bash sed

我想编写一个python脚本来使用Seds格式化文件。

sub = subprocess.call(['sed', 's/=/ = /g', infilename], stdout = outfile)
sub = subprocess.call(['sed', 's/=  = /==/g', infilename], stdout = outfile)

但是这会将整个更改的infile写入outfile两次(outfile包含两个infile,其中每个都有一个sed更改)。有没有办法在infile上执行两个(和更多)sed命令,只对包含所有sed更改的outfile写一次。

2 个答案:

答案 0 :(得分:3)

你可以链接它们。

with open("out", "w") as outfile:
    with open("in", "r") as infile:
        first = subprocess.call([...], stdin=infile, stdout=subprocess.PIPE)
        second = subprocess.call([...], stdin=first.stdout, stdout=outfile)
        second.communicate()

答案 1 :(得分:0)

您可以使用sed

;合二为一
sub = subprocess.call(['sed', 's/=/ = /g;s/=  = /==/g', infilename], stdout = outfile)

他们会一个接一个地去。