In article <c41028f7-e457-4a2b-99f4-c473eaadd...@googlegroups.com>, iMath <redstone-c...@163.com> 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