Have you tried something like: try: os.rename(TMPFILENAME, muttfilename) except Exception, e: log.write("Rename failed: %s" % e)
That rename call is almost certainly failing, and this would at least tell you why... -mg (Also, what OS is this on?) On Sat, May 17, 2014 at 06:19:32PM +0200, Karl Voit wrote: > Hi! > > For a works-for-me-hack[1], I need to write a Python wrapper-script > for the editor (vim at my side). > > The wrapper basically parses the temporary file which was created by > mutt (muttfilename), creates a new temporary file with modified > content (TMPFILENAME), and currently tries to replace muttfilename > with TMPFILENAME by deleting and renaming: > > [...] > log.write('re-wrote email to TMPFILENAME\n') > > assert(os.path.isfile(muttfilename)) > assert(os.path.isfile(TMPFILENAME)) > > os.remove(muttfilename) > log.write('removed muttfilename; renaming TMPFILENAME to muttfilename > ...\n') > > os.rename(TMPFILENAME, muttfilename) ## <-- here, mutt does take over > again!!! :-( > > log.write('renamed TMPFILENAME to muttfilename\n') ## <-- does not get > into log any more > > assert(os.path.isfile(muttfilename)) > assert(os.path.isfile(TMPFILENAME) == False) > > log.write('calling EDITOR ...\n') > call([EDITOR, muttfilename]) > [...] > > After renaming, I want to invoke my editor, make my manual changes > to the email body and after quitting the editor, mutt should take > over again. > > However, when I rename TMPFILENAME to muttfilename, mutt takes over > the process again. This skips the editor part completely. Mutt > complains that the muttfilename is missing: > > "Can't stat /tmp/mutt-grmlvrs-1002-5074-359: No such file or > directory" > > This way, the message file is lost entirely. > > So: how do I accomplish my wrapper so that mutt takes over again > after the editor quits and not before? How can I replace the content > of the mutt-temp-file before my editor without letting mutt taking > over in-between? > > Thanks for your help! > > > [1] Yes, you are tempted to question my hack-approach - I would. > Please don't because I really tried to do the stuff using mutt hooks > and unfortunately this does not work at all because of the > complexity of the stuff I need to do in background as well. Please > let's assume, that there is no other way than to write a > wrapper-script in Python. :-) > > -- > Karl Voit