Удалить файл журнала, если он пуст после закрытия

У меня есть функция библиотеки, которая запускает общий фоновый процесс и регистрирует его.

def LaunchAndLog(cmd): cmd_args = cmd.split() # Split arguments into array logfile = cmd_args[0] + '.log' with open(logfile,'w') as log: return subprocess.Popen(cmd_args, stdout=log,stderr=log) 

Главный вопрос: возможно ли пересмотреть эту функцию, чтобы при закрытии файла журнала, если он пуст, он автоматически удаляется?

Примечание. Мне нужно решение, в котором я могу назвать эту функцию и забыть ее. Я не хочу забывать, чтобы вызывать функцию очистки каждый раз после окончания работы.

(Отклонено?) Идея: я могу использовать threading для запуска отдельного потока, который контролирует процесс и / или файл журнала, но это кажется более сложным, чем необходимо.

Примечание . Должно работать в Python 2.7, но меня также интересует решение Python 3, если оно проще.

One Solution collect form web for “Удалить файл журнала, если он пуст после закрытия”

Попробуйте изменить концепцию и создайте файл только тогда, когда будете готовы писать. Создайте свой собственный класс для обработки объекта файла:

 class MyFile(): def __enter__(self): return self def __init__(self, path): ''' store the path, but don't actually open the file ''' self.path = path self.file_object = None def write(self, s): ''' you open the file here, just before writing ''' if not self.file_object: self.file_object = open(self.path, 'w') self.file_object.write(self, s) def close(self): ''' close the file ''' if self.file_object: self.file_object.close() def __exit__(self, exc_type, exc_value, exc_traceback): self.close() 

Тогда ваше заявление будет следующим:

 with MyFile(logfile) as log: 

Предлагаемое, но отвергнутое редактирование от супергра

  • Что означает «таблица» в функции string.translate?
  • Объединить элементы списков, если какое-то условие
  • Как обновить Python?
  • Производительность NumPy: uint8 против float и умножения или деления?
  • Когда и как использовать RLock Python
  • импорта модулей и __init__.py в Python
  • удалять элементы из набора во время итерации по нему
  • Как дублировать значения списка, используя соответствующий индекс значения из другого списка?
  • Python - лучший язык программирования в мире.