我現在正在攻擊一個框架,並且我想使用日誌記錄。但是,框架的開發人員一直在使用打印語句進行調試,並且他們都被註釋爲生產版本。我想知道,有沒有人知道一個正則表達式來找到這些,並將它們轉換爲日誌記錄調用。將註釋掉的打印語句轉換爲日誌記錄調用 - Python
這是我至今想:
import re
import sys
import StringIO
if not len(sys.argv) != 2:
print 'Syntax: printtologging.py file_to_process'
regex = r'#print (?P<debugstring>*)$'
output = StringIO.StringIO('w+')
def replace(match_object):
return 'logging.debug({0})'.format(match_object.group_dict['debugstring'])
with open(sys.argv[1]) as f:
output.writelines([re.sub(regex, replace, line) for line in f.readlines()])
output.seek(0)
print output.read()
雖然這不到風度似乎工作。我的正則表達式很不棒,有人能幫忙嗎?
我認爲你只需要'。*'而不是'*'在正則表達式中。 (如果沒有這樣的改變,這段代碼就不會爲我運行。) – 2010-12-10 15:43:44
另外,這是'sed'或'perl'中的一行代碼。例如,'perl -p -i.orig -e's /#print(。*)/ logging.debug(\ 1)/'FILE ...'。當你的程序只有一行時,Perl是最好的,你永遠不會再讀它。 ;) – 2010-12-10 15:48:12