我想编写一个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写一次。
答案 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)
他们会一个接一个地去。