从python运行sed命令

时间:2016-06-23 11:09:40

标签: python

我正在尝试从输入文件中读取缓冲区并将其写入输出文件但无法正常工作。 这是我的片段。

nums = 54466
nume = 78954
input_file=open(sys.argv[1],"r");
out_file = open(outp, "w")
subprocess.call(['sed', '-n', ''nums,numep'', input_file], stdout=out_file)

我的代码出了什么问题?

3 个答案:

答案 0 :(得分:0)

可能你正打算打电话

sed -n '$LINE1,$LINE2p' input_file

打印$ LINE1和$ LINE2之间的行。

Python字符串替换以不同的方式工作 - 尝试替换

''nums,numep''

"'%s,%sp'" % (nums, nume)

"'{},{}p'".format(nums, nume)

答案 1 :(得分:0)

我很确定你最好在 python中实现逻辑,而不是调用sed,但是,这样的事情会起作用:

import subprocess
#set output_file and input_file
nums = 54466
nume = 78954
cmd = "sed -n '{s},{e}p' {i} > {o}".format(i=input_file,o=output_file,s=nums,e=nume)
subprocess.call(cmd,shell=True)

答案 2 :(得分:0)

只是说明你不应该运行sed ...

的原因
from itertools import islice

nums, nume = 54466, 78954
with open(sys.argv[1], 'r') as infile, open(outp, 'w') as outfile:
    for line in islice(infile, nums, nums + nume):
        outfile.write(line)

这样可以更简单,更不容易出错,并且可以更轻松地调用外部程序。