返回顶部
首页 > 资讯 > 后端开发 > Python >22. Python 模块2
  • 100
分享到

22. Python 模块2

模块Python 2023-01-31 00:01:00 100人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

1. logging 模块日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改。python有给开发者们提供好的日志模块,下面介绍一下logging模块:首先,我们先来看一个例子:import logg

1. logging 模块

日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改。

python有给开发者们提供好的日志模块,下面介绍一下logging模块:

首先,我们先来看一个例子:

import logging

logging.debug('This is debug message')

logging.info('This is info message')

logging.warning('This is warning message')

logging.error('This is error message')

logging.critical('This is critical message')

结果:

WARNING:root:This is warning message

ERROR:root:This is error message

CRITICAL:root:This is critical message

默认情况下,logging将日志打印到屏幕

日志级别大小关系为:

CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。

● DEBUG:详细的信息,通常只出现在诊断问题上。

● INFO:确认一切按预期运行

● WARNING:一个警告,可能会有一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”),这个软件还能按预期工作

● ERROR:个更严重的问题,软件没能执行一些功能

● CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行

默认logging默认的日志级别是 info,一般基本上所有的程序都是这个级别,有助于我们排查问题,但是当发生问题,我们没法定位到问题,很多情况下我们需要把日志级别提升到debug级别。

如何提升日志级别:

通过logging.basicConfig函数对日志的输出格式及方式做相关配置

import logging

logging.basicConfig(level=logging.DEBUG, fORMat='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt=' %Y/%m/%d %H:%M:%S', filename='myapp.log', filemode='w')

logger = logging.getLogger(__name__)

logging.debug('This is debug message')

logging.info('This is info message')

logging.warning('This is warning message')

logging.error('This is error message')

logging.critical('This is critical message')

结果:

在当前文件新增了一个myapp.log文件,文件的内容如下:

2017/11/10 21:17:42 read.py[line:12] DEBUG This is debug message

2017/11/10 21:17:42 read.py[line:13] INFO This is info message

2017/11/10 21:17:42 read.py[line:14] WARNING This is warning message

2017/11/10 21:17:42 read.py[line:15] ERROR This is error message

2017/11/10 21:17:42 read.py[line:16] CRITICAL This is critical message

解释:

主要是通过logging.basicConfig函数进行操作,现在我们来介绍一下该函数参数的用法:

level: 设置日志级别,默认为logging.WARNING

filename: 指定日志文件名。

filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a'

format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:

%(levelname)s: 打印日志级别名称

%(filename)s: 打印当前执行程序名

%(funcName)s: 打印日志的当前函数

%(lineno)d: 打印日志的当前行号

%(asctime)s: 打印日志的时间

%(thread)d: 打印线程ID

%(process)d: 打印进程ID

%(message)s: 打印日志信息

datefmt: 指定时间格式,同time.strftime()

stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

logging.getLogger(__name__):

创建一个日志对象:

返回一个logger实例,如果没有指定name,返回root logger。

只要name相同,返回的logger实例都是同一个而且只有一个,即name和logger实例是一一对应的。

这意味着,无需把logger实例在各个模块中传递。

只要知道name,就能得到同一个logger实例。

logging.getLogger(__name__) 在上述实例中__name__就指的是__main__。


2.os模块

os模块也是我们平时工作中很常用到的一个模块,通过os模块调用系统命令,获得路劲,获取操作系统的类型等都是使用该模块。

下面我们就了解一下os模块。

(1)通过os获取系统类型

import os

print(os.name)

这个就是查看我们系统的类型:

如果是windows系统,os.name = 'nt';

如果是linux系统os.name = 'posix';

不同的操作系统是命令可能不一样。

所以在使用系统命令之前,我们先要判断系统是linux系统还是windows系统。

(2)执行系统命令

通过Python来代用系统命令

import os

os.system(‘ipconfig’)

content=os.popen('ipconfig').read()

print(content)

解释:

该代码调用了windows系统的ipconfig命令,ipconfig是用来查看windows系统ip的。

os.system(‘ifconfig’)只会调用系统的命令,但是当我们需要获得系统命令最后的执行结果的时候该怎么办呢?

这时候我们就用os.popen()方法,os.popen()返回的是一个file对象,我们可以通过file.read()来获得最后系统命令最终的结果

(3)目录和文件相关操作

① 获得当前目录的路径

import os

print(os.getcwd())

② 列出当前目录的文件

print(os.listdir(os.getcwd()))

③ 切换目录

os.chdir('d:')

④ 列出C:\Python27目录下的文件

print(os.listdir('C:\Python27'))

⑤ 在当前目录下创建abc目录

os.mkdir('abc')

⑥ 删除当前目录下的1.txt文件,(若文件不存在会报错)

os.remove('1.txt')

⑦ 打印操作系统的分隔符,linux系统的分隔符\n,windows系统的分隔符\r\n,Mac系统的分隔符\r

print(os.linesep)

⑧ 在当前目录拼接字段,并不出创建 # E:\test\abc.txt 文件

print(os.path.join(os.getcwd(), 'abc.txt'))

返回 # E:\test\abc.txt

print(os.path.islink(os.getcwd()))

返回 # False

⑨ 把最后的文件名和目录分开

path1 = os.path.join(os.getcwd(), 'abc.txt')

print(os.path.split(path1))

返回 # ('E:\\test', 'abc.txt')

⑩ 把第一节目录和后面的分开

print(os.path.splitdrive(path1))

返回 # ('E:', '\\test\\abc.txt')

(11) 把目录文件名和后缀名分开

print(os.path.splitext(path1))

返回 # ('E:\\test\\abc', '.txt')

(12) 若当前目录下存在aaa目录,不创建,当前不存在aaa目录,创建aaa目录

if not os.path.exists(r'E:\test\aaa'):

os.makedirs(r'E:\test\aaa')

(13) 获得E:\test\test.py文件的目录

print(os.path.dirname(r'E:\test\test.py'))

返回 # E:\test

解释:

1,os.getcwd() 获得目录的当前系统程序工作路劲

2,os. chdir(‘目标目录’) 切换到目标目录

3,os.listdir(‘字符串目录’) 列出字符串目录下的所有文件

4,os.makedirs('目录') 创建目录

5,os.remove('1.txt') 删除文件,文件不存在时会报错

6,os.linesep 打印操作系统的分隔符,linux系统的分隔符\n,windows系统的分隔符\r\n,mac系统的分隔符\r

7,os.path.join(os.getcwd(), 'aaa', ‘bbb’, ‘ccc’) 拼接出来多级目录:E:\test\aaa\bbb\ccc

8,os.path.exists(‘目录’) 判断目录是否存在

9,os.path.split(‘文件或者目录’) 把最后的一个目录或者文件和前面的目录分开,返回一个tuple

10,os.path.splitext(‘文件’) 把文件的后缀名和前面分开,返回一个tuple


3.commands 模块只使用于linux的shell模式下

在我们平时码字时,经常需要调用系统脚本或者系统命令来解决很多问题;

一个很好用的模块command,可以通过python调用系统命令;

commands是提供linux系统环境下支持使用shell命令的一个模块;

调用系统命令command模块提供了三种方法:cmd代表系统命令。

(1)commands.getoutput(cmd)

作用:只返回执行shell命令的结果

#!/usr/bin/env python

#-*- coding:utf-8 -*-

import commands

cmd = 'ls /home/admin'

a = commands.getoutput(cmd)

print(type(a))

print(a)

结果:

<type 'str'>

Nginx.conf

test.py

(2)commands.getstatusoutput(cmd)

作用:在上面我们在执行shell命令的时候,我们的shell命令可能执行报错,或者异常退出,我们就要有一个条件来判断shell最终执行的结果是什么,commands.getstatusoutput(cmd)的返回结果有两个值。

#!/usr/bin/env python

#-*- coding:utf-8 -*-

import commands

cmd = 'ls /home/admin'

c = commands.getstatusoutput(cmd)

print(type(c))

status, output = commands.getstatusoutput(cmd)

print(status)

print(output)

print(type(output))

结果

<type 'tuple'>

0

nginx.conf

test.py

<type 'str'>

解释:

Commands.getstatusoutput(cmd)的返回结果是一个tuple,第一个值是shell执行的结果,如果 shell 执行成功,返回0,否则,为非0;

第二个是一个字符串,就是我们shell命令的执行结果,python通过一一对应的方式复制给status和output。



4. sys 模块

(1)通过sys模块获取程序的参数

import sys

print('argv[0] = {0}   argv [1] = {1}'.format(sys.argv[0], sys.argv[1]))

执行:

python test.py hello

结果:

argv[0] = E:/test/test.py     argv [1] = hello

解释:

和其他语言一样,python的sys模块默认是把第一个参数默认是程序本省,从第二个参数起都是代码后面跟着的参数,通过sys.arg[n]就可以获得传入到程序中的参数。


(2)sys.stdin \ stdout \ stderr

功能:stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象。

如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的。

你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们

(2.1) sys.stdout 与 print

当我们在 Python 中打印对象调用 print obj 时候,事实上是调用了sys.stdout.write(obj+'\n'),print 将你需要的内容打印到了控制台,然后追加了一个换行符,print 会调用 sys.stdout 的 write 方法。

以下两行在事实上等价:

import sys

sys.stdout.write('hello\n') #默认不加换行符,如需要换行,手动添加换行符。

print 'hello'

(2.2)sys.stdin 与 raw_input

import sys

a = raw_input('raw_input_name: ')

print(a)

print 'stdin_name: ', #逗号保持在同一行上

b = sys.stdin.readline()[:-1] # -1 表示丢弃换行符\n

print(b)

(2.3)从控制台重定向到文件

mport sys

f_handler=open('out.log', 'w')

sys.stdout=f_handler

print 'hello'

在当前文件下新生成一个文件out.log,文件内容为hello


(3)捕获sys.exit(n)调用

功能:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.exit函数,带有一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。(0是正常退出,其他为异常)

def exitfunc():

print "hello world"

sys.exitfunc = exitfunc   # 设置捕获时调用的函数

print "aaaaaaaa"

sys.exit(1)     # 退出自动调用exitfunc()后,程序依然退出了

print "there" # 不会被 print

结果:

aaaaaaaa

hello world

解释:

1,设置sys.exitfunc函数,及当执行sys.exit(1)的时候,调用exitfunc函数

2,sys.exit(1)后面的内容就不会执行了,因为程序已经退出。


--结束END--

本文标题: 22. Python 模块2

本文链接: https://lsjlt.com/news/182977.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 22. Python 模块2
    1. logging 模块日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改。Python有给开发者们提供好的日志模块,下面介绍一下logging模块:首先,我们先来看一个例子:import logg...
    99+
    2023-01-31
    模块 Python
  • 22 Python的argparse模块
    概述         在上一节,我们介绍了Python的datetime模块,包括:datetime模块中一些常用的属性和函数。在这一节,我们将介绍Python的argparse模块。argparse模块是Python的一个标准库,用于编写...
    99+
    2023-10-01
    python argparse模块
  • python导入模块--import--2
    调用之前写的彩色打印,写个简单的脚本testimport.py实验下在跟之前test_import_color_print.py同级目录下创建testimport.py文件,不然导模块会有问题代码如下#!/usr/bin/python #&...
    99+
    2023-01-30
    模块 python import
  • 第22天 常用模块三
    介绍的模块 logginghashlib  模块一:logging 人生三问 什么是日志  对每天所发生的事情做的记录就是日志。 为什么要用日志  日志记录了我们程序每天发生了什么事情,这个对于我们程序的维护有很大的帮助。例如每天都...
    99+
    2023-01-30
    模块 常用
  • 2-datetime 模块
    时间转字符串 在我们的使用中,我们常常需要将时间转换为字符串,用来作为文件的名字或者用于加密字符的输出等等。例子: from datetime import datetime datetime.strftime(datetime.no...
    99+
    2023-01-31
    模块 datetime
  • Python模块:time模块
    time模块:python中处理时间的基础模块,有时间戳,元组,自定义,三种时间表现形式。python中时间戳的值是以1970年1月1日0点开始计算的,单位是秒。时间戳:就是两个时间差的数值。时区:传说中在开发服务器/客户端程序时,时区不一...
    99+
    2023-01-31
    模块 Python time
  • python模块:smtplib模块
    1.使用本地的sendmail协议进行邮件发送格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])host:SMTP服务器主机的IP地址或者是域名port:服务的端口号(默...
    99+
    2023-01-31
    模块 python smtplib
  • python 22- day3
    1、知识点补充 2、编码 3、集合 4、深浅copy 5、文件操作 file1 = open("D:/myclass/课堂文件/day02/day02/02 字符串.py",encoding='utf-8',mode='r') print...
    99+
    2023-01-31
    python
  • Python中schedule模块定时任务的使用方法(2)
    目录1 设置时间间隔随机数2 设置定时任务执行到指定时间3 计算当前到下一次执行的时间差单位为秒上一篇文章Python中schedule模块关于定时任务使用方法 1 设置时间间隔随机...
    99+
    2024-04-02
  • Python常用标准库及第三方库2-sys模块
    一、sys模块简介前面介绍的os模块主要面向操作系统,而本篇的sys模块则主要针对的是Python解释器。sys模块是Python自带的模块,它是与Python解释器交互的一个接口。sys 模块提供了许多函数和变量来处理 Python 运行...
    99+
    2023-05-14
    Python 模块 2-sys
  • python模块学习----nmap模块
    安装nmap模块:pip install python_nmanmap模块说明:python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理...
    99+
    2023-01-31
    模块 python nmap
  • 使用Python模块:struct模块
    Python没有提供直接的将用户定义的数据类型和文件IO关联起来的功能,但是它提供了struct库(是一个内置库)——我们可以以二进制模式来写这些数据(有趣的是,它真的是设计来讲文本数据写为缓存的) 1)bytes、str...
    99+
    2023-01-31
    模块 Python struct
  • python加密模块-hashlib模块
    hashlib模块 用于加密相关的操作,3.X里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法 (sha比md5 更复杂、md5 不能反解) 具体应用:用于网站防篡改。具...
    99+
    2023-01-31
    模块 python hashlib
  • python 模块
    python的模块分为2种:1.标准库(不需要安装,直接导入就可以使用的)2.第三方库(必须要手动安装的)先来介绍2个标准库:sys和os#!/usr/bin/env python# coding: utf-8...
    99+
    2023-01-30
    模块 python
  • Python模块
    初步认识 安装完python后,python自带一部分模块,自带的模块又称作内置模块。其中一部分模块在路径Lib下。(这里的文件夹可以看做包,可以把多个模块放进一个包里) 从模块的来源来讲,可以分三种:内置模块、自定义模块(自己定义的)...
    99+
    2023-01-30
    模块 Python
  • python-模块
    一:模块的基本认识: 内置模块 内置模块是python自带的功能,在使用内置模块相应功能时,需要先导入再使用    第三方模块 下载-->安装-->使用 1.找到python所在的根目录-->再找到Scrip...
    99+
    2023-01-31
    模块 python
  • python - 模块
    参考:https://www.cnblogs.com/nulige/p/6166205.html一、模块介绍Python Module(模块),就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。文件...
    99+
    2023-01-31
    模块 python
  • python常见模块之OS模块和time模块
    一、OS模块概述 Python OS模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。 二、常用方法 三、OS模...
    99+
    2024-04-02
  • Python中的sys模块、random模块和math模块
    一、sys运行时环境模块 sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。 用法: sys.argv:命令行参数List,第...
    99+
    2024-04-02
  • Python基础之hashlib模块subprocess模块logging模块
    目录一、hashlib模块基本操作与用法二、subprocess模块简介基本操作与用法三、logging模块简介基本操作与用法一、hashlib模块 什么是哈希模块: hashlib...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作