FileIO вышел из строя при использовании подпроцессов в Python - PullRequest
0 голосов
/ 15 июня 2010

Я пытаюсь создать файл журнала с информацией по порядку.Вот что у меня есть:

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 () это исправит, но нет.

Пожалуйста, помогите, я был бы очень признателен, если бы кто-то мог указать на мою ошибку.

1 Ответ

0 голосов
/ 15 июня 2010

I / O буферизируется по умолчанию. Попробуйте sys.stdout.flush () после sys.stdout.write ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...