Python 输入输出模块详解:sys、argparse 和 logging

在这里插入图片描述

一. sys模块

sys模块提供了许多与Python解释器相关的变量和函数,这些变量和函数可以用来获取和设置解释器的系统参数。

打印Python版本

import sys
print("Python version:", sys.version)

获取命令行参数

import sys
# 获取命令行参数
args = sys.argv
print("Command line arguments:", args)

打印脚本名称

import sys
# 获取脚本名称
script_name = sys.argv[0]
print("Script name:", script_name)

使用sys.exit()终止程序

import sys
# 检查是否有足够的命令行参数
if len(sys.argv) < 2:
    print("Usage: python script.py")
    sys.exit(1)
# 打印文件名
print("Filename:", sys.argv[1])

**

二. argparse模块

**

argparse模块提供了一种用于解析命令行参数和选项的方法,可以帮助我们轻松地处理命令行输入。

使用argparse解析命令行参数

import argparse
# 创建ArgumentParser对象
parser = argparse.ArgumentParser(description='Process some integers.')
# 添加命令行参数
parser.add_argument("integers", metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
# 解析命令行参数
args = parser.parse_args()
# 打印解析后的参数
print("Parsed integers:", args.integers)

使用argparse添加可选参数

import argparse
# 创建ArgumentParser对象
parser = argparse.ArgumentParser(description='Print the square of a number.')
# 添加可选参数
parser.add_argument("--square", dest="num", action="store", type=int,
                    help="display a square of a given number")
# 解析命令行参数
args = parser.parse_args()
# 打印结果
if args.num is not None:
    print("Square of", args.num, "is", args.num ** 2)

使用argparse添加子命令

import argparse
# 创建ArgumentParser对象
parser = argparse.ArgumentParser(description='A simple command-line utility.')
subparsers = parser.add_subparsers(dest='command')
# 添加子命令
add_parser = subparsers.add_parser('add', help='Add two numbers')
add_parser.add_argument('a', type=int, help='First number')
add_parser.add_argument('b', type=int, help='Second number')
# 解析命令行参数
args = parser.parse_args()
# 执行子命令
if args.command == 'add':
    print(args.a + args.b)

**

三. logging模块

**

logging模块提供了一个灵活的日志系统,可以记录程序运行时的信息,这对于调试和维护程序非常有用。

创建一个简单的日志记录器

import logging
# 创建一个logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler('example.log')
fh.setLevel(logging.DEBUG)
# 创建一个formatter,用于设定日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
# 给logger添加handler
logger.addHandler(fh)
# 记录一条日志
logger.info('This is an info message.')

在控制台打印日志

import logging
# 创建一个logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# 创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# 创建一个formatter,用于设定日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
# 给logger添加handler
logger.addHandler(ch)
# 记录一条日志
logger.info('This is an info message printed to console.')

设置不同的日志级别


import logging
# 创建一个logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler('example.log')
fh.setLevel(logging.DEBUG)
# 创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# 创建一个formatter,用于设定日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 给logger添加handler
logger.addHandler(fh)
logger.addHandler(ch)
# 记录不同级别的日志
logger.debug('This is a debug message.')
logger.info('This is an info message.')
logger.warning('This is a warning message.')
logger.error('This is an error message.')
logger.critical('This is a critical message.')

总结

以上示例展示了如何使用sys、argparse和logging模块来处理程序的输入输出、命令行参数解析以及日志记录。希望这些例子能帮助你更好地理解这些模块的工作原理以及如何在实际应用中使用它们。
由于文章篇幅有限,文档资料内容较多,需要这些文档的朋友,可以加小助手微信免费获取,【保证100%免费】,中国人不骗中国人。

在这里插入图片描述

                                     **(扫码立即免费领取)**

全套Python学习资料分享:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,还有环境配置的教程,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频全套

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。


在这里插入图片描述

如有侵权,请联系删除。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值