主题
问题一:
题目: 编写一个 Python 程序,使用内置的 logging 模块设置日志,将日志同时输出到控制台和一个名为 log.txt 的文件中。日志级别应为 INFO。
答案:
python
import logging
logging.basicConfig(filename='log.txt', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def main():
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
if __name__ == "__main__":
main()问题二:
题目: 创建一个 Python 配置文件,包含数据库连接信息和其他配置参数。编写一个程序,读取配置文件并输出其中的配置信息。
答案:
python
import configparser
config = configparser.ConfigParser()
config.read('config.ini')
db_host = config.get('Database', 'host')
db_port = config.get('Database', 'port')
db_user = config.get('Database', 'user')
db_password = config.get('Database', 'password')
print(f"Database Host: {db_host}")
print(f"Database Port: {db_port}")
print(f"Database User: {db_user}")
print(f"Database Password: {db_password}")问题三:
题目: 编写一个装饰器函数,用于测量其他函数的执行时间,并将结果输出到日志中。
答案:
python
import logging
import time
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def timing_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
elapsed_time = end_time - start_time
logging.info(f"{func.__name__} took {elapsed_time} seconds to execute.")
return result
return wrapper
@timing_decorator
def example_function():
# Some time-consuming task
time.sleep(2)
return "Function executed successfully."
if __name__ == "__main__":
example_function()问题四:
题目: 编写一个 Python 程序,使用 argparse 模块解析命令行参数,其中包括一个日志级别参数,允许用户指定日志级别。
答案:
python
import argparse
import logging
parser = argparse.ArgumentParser(description='Process some data.')
parser.add_argument('--log_level', help='Set the logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)',
choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], default='INFO')
args = parser.parse_args()
logging.basicConfig(level=args.log_level, format='%(asctime)s - %(levelname)s - %(message)s')
def main():
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
if __name__ == "__main__":
main()问题五:
题目: 创建一个 Python 类,具有一个装饰器方法,该装饰器方法用于记录类方法的调用,并将日志输出到文件。
答案:
python
import logging
logging.basicConfig(filename='class_log.txt', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
class LoggerClass:
def log_method_call(func):
def wrapper(self, *args, **kwargs):
logging.info(f"Method {func.__name__} called with arguments {args} and keyword arguments {kwargs}")
return func(self, *args, **kwargs)
return wrapper
@log_method_call
def example_method(self, param):
print(f"Method executed with parameter: {param}")
if __name__ == "__main__":
my_object = LoggerClass()
my_object.example_method("test_parameter")