Я пытаюсь увеличить все метки времени (в формате «ЧЧ: ММ: СС») в текстовом файле на количество секунд, указанное в параметре командной строки для моей программы.
Вот упрощенная версия моих усилий на данный момент:
import re
from datetime import datetime, timedelta
time_diff = timedelta(seconds=10)
def replace_time(matchobj):
if matchobj.group(1) not in [None, '']:
return (datetime.strptime(matchobj.group(1), "%H:%M:%S") + time_diff).strftime("%H:%M:%S")
print re.sub('(\d\d:\d\d:\d\d)', replace_time, "01:27:55")
Это отлично работает: результат запуска - 01:28:05
, это как раз то, что я хочу.
Однако я слышал, что я должен использовать глобальные переменные как можно меньше. Поэтому мне было интересно, есть ли простой способ передать time_diff
в качестве аргумента replace_time
вместо использования глобальной переменной.
Я попробовал очевидное, но не получилось:
def replace_time(matchobj, time_diff):
if matchobj.group(1) not in [None, '']:
return (datetime.strptime(matchobj.group(1), "%H:%M:%S") + time_diff).strftime("%H:%M:%S")
time_diff = timedelta(seconds=10)
print re.sub('(\d\d:\d\d:\d\d)', replace_time(matchobj, time_diff), "01:27:55")
с этой ошибкой: NameError: name 'matchobj' is not defined
, поэтому я не могу передать matchobj напрямую.
Я посмотрел стандартную страницу и стандартную информацию , но не могу найти там нужную мне информацию. Как я могу избежать использования глобальной переменной здесь? Можно ли как-то передать дополнительный аргумент функции replace_time
? Заранее спасибо.