2015-08-03 3 views
2

Использование python 2.7 ..новое имя файла каждый раз при запуске python

Я использую ниже, чтобы отправить весь вывод печати в файл с именем output.log. Как я могу отправить это в другой файл каждый раз, когда он запускается ... В bash мы можем объявить переменную, называемую датой или чем-то, и иметь эту часть имени файла ... так как я могу добиться того же с python ??

Так что мой вопрос ..

  1. каждый раз, когда я запускаю ниже сценарий, мой файл должен иметь именования output_date/time.log
  2. Кроме того, как я могу удалить файл, которые старше чем Х дней, которые имеют файл именовании вывода _ *. войти

    import sys 
    f = open('output.log', 'w') 
    sys.stdout = f 
    print "test" 
    f.close() 
    
+1

искать модули 'time' и' logging'. https://docs.python.org/2/library/time.html https://docs.python.org/2/library/logging.html – Jeremy

ответ

4

с некоторыми личными предпочтениями форматирования это, как правило, что я делаю.

import time 
moment=time.strftime("%Y-%b-%d__%H_%M_%S",time.localtime()) 
f = open('output'+moment+'.log', 'w') 

насколько автоматическое удаление, вы хотите, чтобы он был удален при запуске теста?

os.remove(fileStringName) 

работы, вы просто должны делать арифметические и строковые преобразования. Я бы использовал os.listdir (pathToDirWithOutputLogs) итерацию по именам файлов и выполнил математику на них и набрал os.remove на старых.

2

Чтобы получить дату/время:

from time import gmtime, strftime 

outputFileName = "output_#.log" 
outputFileName = outputFileName.replace("#", strftime("%Y-%m-%d_%H:%M:%S", gmtime())) 

Для численного инкрементирования:

outputFileName = "output #.log" 
outputVersion = 1 
    while os.path.isfile(outputFileName.replace("#", str(outputVersion))): 
     outputVersion += 1 
    outputFileName = outputFileName.replace("#", str(outputVersion)) 

Чтобы удалить файлы старше определенной даты, вы можете перебирать все файлы в каталоге с `` , и удалите их с помощью os.remove(). Вы можете compare the file names после разбора их.

lastTime = "2015-08-03_19:04:41" 
for fn in filter(os.path.isfile, os.listdir()): 
    strtime = fn[fn.find("_"):fn.rfind(".")] 
    if strtime < lastTime: 
     os.remove(fn)