Skip to content

返回

问题一:

题目: 编写一个 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")