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

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

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: 

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

  • Python и разрывы строк
  • Неизменность в Python
  • суммировать каждое значение в списке кортежей
  • Присвоить 0 определенным словам, если слов нет
  • Более сложная сортировка: как скопировать данные и отсортировать данные по категориям? (Python)
  • Получите максимальное значение из списка со списками?
  • Как найти ближайшее простое число в массиве, другое число в этом массиве?
  • Запуск цикла вместе с приложением Tkinter
  • Python - лучший язык программирования в мире.