У меня есть код ниже, который добавляет строку Logger.info после каждого определения функции, которое мне нужно запустить на скрипте Python, что является требованием.
Единственный вопрос - это нужно записать обратно в тот же файл, чтобы в новом файле были все эти инструкции looger.info под каждым определением функции.
например, файл abc.py в настоящее время имеет код ниже:
def run_func (sql_query):
return run_func(sql_query)
и приведенный ниже код должен создать тот же файл abc.pyно со всеми logger.info, добавленными в этот новый файл
def run_func (sql_query): LOGGER.info ('' MIPY_INVOKING run_func функция для файла abc в каталоге 'возвращает run_func (sql_query)
Я не могу записать sed в этом файле в новый файл (с тем же именем файла), чтобы исходный файл был заменен тем же именем и чтобы у меня были все операторы logger.info.
for i in $(find * -name '*.py');
do echo "#############################################" | tee -a auto_logger.log
echo "File Name : $i" | tee -a auto_logger.log
echo "Listing the python files in the current script $i" | tee -a auto_logger.log
for j in $(grep "def " $i | awk '{print $2}' | awk -F"(" '{print $1}');
do
echo "Function name : $j" | tee -a auto_logger.log
echo "Writing the INVOKING statements for $j function definition" | tee -a auto_logger.log
grep "def " $i |sed '/):/w a LOGGER.info (''INVOKING1 '"$j"' function for '"$i"' file in sam_utilities'')'
if [ $? -ne 0 ] ; then
echo " Auto Logger for $i filename - Not Executed Successfully" | tee -a auto_logger.log
else
echo "Auto Logger for $i filename - Executed Successfully" | tee -a auto_logger.log
fi
done
done