我正在尝试按顺序生成包含信息的日志文件。这就是我所拥有的:
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”之前的子进程的输出!我认为lock()会修复它,但不会。
请帮忙,如果有人能指出我的错误,我真的很感激。
答案 0 :(得分:0)
默认情况下,I / O是缓冲的。在sys.stdout.write()之后尝试sys.stdout.flush()。