2121import os
2222import pdb
2323import re
24+ import shutil
2425import sys
26+ import tempfile
2527try :
2628 from pathlib import Path
2729except ImportError :
@@ -559,14 +561,7 @@ def beginFile(self, genOpts):
559561 # Open specified output file. Not done in constructor since a
560562 # Generator can be used without writing to a file.
561563 if self .genOpts .filename is not None :
562- if sys .platform == 'win32' :
563- directory = Path (self .genOpts .directory )
564- if not Path .exists (directory ):
565- os .makedirs (directory )
566- self .outFile = (directory / self .genOpts .filename ).open ('w' , encoding = 'utf-8' )
567- else :
568- filename = self .genOpts .directory + '/' + self .genOpts .filename
569- self .outFile = io .open (filename , 'w' , encoding = 'utf-8' )
564+ self .outFile = tempfile .NamedTemporaryFile (mode = 'w' , encoding = 'utf-8' , delete = False )
570565 else :
571566 self .outFile = sys .stdout
572567
@@ -580,6 +575,12 @@ def endFile(self):
580575 self .outFile .flush ()
581576 if self .outFile != sys .stdout and self .outFile != sys .stderr :
582577 self .outFile .close ()
578+ if self .genOpts .filename is not None :
579+ if sys .platform == 'win32' :
580+ directory = Path (self .genOpts .directory )
581+ if not Path .exists (directory ):
582+ os .makedirs (directory )
583+ shutil .copy (self .outFile .name , self .genOpts .directory + '/' + self .genOpts .filename )
583584 self .genOpts = None
584585
585586 def beginFeature (self , interface , emit ):
0 commit comments