我有一个以</END>结尾的文件,该文件在</END>之后可能包含空白行。我不在乎空白行。但是最后一个非空白词是</END>。我需要在</END>之前添加几行。我已经用fileinput完成了

for each_line in fileinput.input("testme",inplace=True):
    if each_line.strip() == '</END>':
        print "\nAdding ^.*"+source_resource+".*$ \\"
        print destination+" [R="+http_code+",L]"
    print each_line,


可以请一些专家建议使用seek如何实现。我相信seek对于光标放置非常方便。

最佳答案

您有两种可能的方法,一种方法是使用就地写入,另一种方法是创建文件副本。

第二种方法很容易实现:

with open(src_path, "r") as in_f, open(dest_path, "w") as out_f:
    for line in in_f:
        if line == "</END>":
            out_f.write("whatever you want")
        out_f.write(line)
        out_f.write('\n')


对于第一种方法,我们需要检测终点线并移回其起点:

last = 0
with open(src_path, "r+") as f:
    for line in f:
        if line == "</END>":
            f.seek(last)
            f.write("whatever you want"
            f.write(line) # rewrite the line
            f.write('\n')
        last = f.tell() # This will give us the end of the last line


我确实亲自编写了这段代码,所以可能会有一些错误,但是您明白了。

关于python - python用seek替换fileinput,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17063872/

10-16 23:17