In article <[email protected]>,
iMath <[email protected]> wrote:
> read and write the same text file
> Open a text file ,read the content ,then make some change on it ,then write
> it back to the file ,now the modified text should only has the modified
> content but not the initial content ,so can we implement this by only set the
> mode parameter with open() function ?if yes ,what the parameter should be ?if
> no ,can we implement this by only one with statement ?
> I implement this with 2 with statement as the following
>
> replace_pattern = re.compile(r"<.+?>",re.DOTALL)
>
> def text_process(file):
>
> with open(file,'r') as f:
> text = f.read()
>
> with open(file,'w') as f:
> f.write(replace_pattern.sub('',text))
At a minimum, you need to close the file after you read it and before
you re-open it for writing.
There's a variety of ways you could achieve the same effect. You might
open the file once, in read-write mode, read the contents, rewind to the
beginning with seek(), then write the new contents. You might also
write the modified data out to a new file, close it, and then rename it.
But, open, read, close, open, write, close is the most straight-forward.
--
http://mail.python.org/mailman/listinfo/python-list