代码之家  ›  专栏  ›  技术社区  ›  Gareth

在Python中使用子进程时,FileIO出现错误

  •  0
  • Gareth  · 技术社区  · 14 年前

    我正在尝试生成一个日志文件,其中包含按顺序排列的信息。这就是我所拥有的:

    class ExecThread(threading.Thread):
     def __init__(self, command):
      self.command = command
      self._lock = threading.Lock()
      threading.Thread.__init__ ( self )
    
     def run ( self ):
      self._lock.acquire()
      sys.stdout.write(''.join(["Executing: ",self.command,'\n']))
      log_file.write(''.join([self.command,'\n']))
      os.system(self.command)
      self._lock.release()
    
    for ive in locate('*.ive', root_dir):
      command = "osgconv"
      command = ''.join([command,' ',"-O OutputTextureFiles",' ', infile,' ', outfile,' ',"2>&1"])
    
      conv_osg_thread = ExecThread(command)
      conv_osg_thread.start()
      conv_osg_thread.join()
    

    我正在执行的命令在结尾处有此重定向:“2>&1" 当我运行这个程序时,我会在消息“Executing blah”之前得到子进程的输出,这个消息列在前面!我以为锁()能修好它,但是不行。

    1 回复  |  直到 14 年前
        1
  •  0
  •   dmazzoni    14 年前

    默认情况下,I/O是缓冲的。在sys.stdout.write()之后尝试sys.stdout.flush()。