加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com/)- 数据分析、网络、云渲染、应用安全、大数据!
当前位置: 首页 > 编程开发 > Python > 正文

python基础学习16----模块

发布时间:2020-07-15 23:46:09 所属栏目:Python 来源:互联网
导读:模块(Module)的引入 调用模块中的函数的方式为 这种方式引入会相当于将模块中代码执行一遍,所以如果引入的模块中有输出语句,那么只写import 模块名,运行也会显示输出。 若想只引入模块中的某个

<div class="cnblogs_Highlighter">
<pre class="brush:python;gutter:true;">import 模块名

调用模块中的函数的方式为

这种方式引入会相当于将模块中代码执行一遍,所以如果引入的模块中有输出语句,那么只写import 模块名,运行也会显示输出。

若想只引入模块中的某个函数,可以使用如下方法

这样可以直接使用函数名调用函数

但是有一个问题需要注意,这样虽然只引入了所需要的函数,但是如上所说,若模块中有输出语句,依然会执行

<div class="cnblogs_Highlighter">
<pre class="brush:python;gutter:true;">import os
import sys
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(file)))
sys.path.append(base_dir)

这里__file__为当前文件所在的相对路径,通过abspath获得绝对路径,再通过dirname来去掉文件名,最终生成文件目录最高层的绝对路径并添加到

搜索路径中。

在此基础上,就可以使用以下方式引入不同包中的模块

接下来简单介绍一下一些常用的模块

time模块常用内置函数

<div class="cnblogs_Highlighter">
<pre class="brush:python;gutter:true;">import time
print(time.localtime())#time.struct_time(tm_year=2018,tm_mon=9,tm_mday=20,tm_hour=16,tm_min=31,tm_sec=32,tm_wday=3,tm_yday=263,tm_isdst=0)

3.time.asctime()

接受格式化元组形式的时间为参数,返回一个可读形式的时间

4.time.ctime()

接受一个时间戳为参数,将其转变为可读形式的时间

5.time.strftime()

time.strftime(format,time)

接收以结构化时间元组为参数,并返回以可读字符串表示的当地时间,格式由参数format决定 

%y 两位数的年份表示(00-99)%Y 四位数的年份表示(000-9999)%m 月份(01-12)%d 月内中的一天(0-31)%H 24小时制小时数(0-23)%I 12小时制小时数(01-12)%M 分钟数(00=59)%S 秒(00-59)%a 本地简化星期名称%A 本地完整星期名称%b 本地简化的月份名称%B 本地完整的月份名称%c 本地相应的日期表示和时间表示%j 年内的一天(001-366)%p 本地A.M.或P.M.的等价符%U 一年中的星期数(00-53)星期天为星期的开始%w 星期(0-6),星期天为星期的开始%W 一年中的星期数(00-53)星期一为星期的开始%x 本地相应的日期表示%X 本地相应的时间表示%Z 当前时区的名称%% %号本身

6.time.sleep()

time.sleep(sec)

表示将进程挂起sec秒

<div class="cnblogs_Highlighter">
<pre class="brush:python;gutter:true;">print(random.uniform(4,7))
print(random.uniform(7,4))

参数没有必要第一个小,第二个大

3.random.randint()

生成一个指定范围内的随机整数

这里参数必须是第一个小于等于第二个参数

4.random.randrange()

生成一个指定范围内的随机整数,第三个参数为间隔

5.random.choic()

在一个序列中随机选择一项

6.random.sample()

在序列中选取规定数量的元素放到一个列表中返回

7.random.shuffle()

将序列打乱,重排

os模块

2.os.getcwd()

返回当前的工作目录

3.os.listdir()

将指定目录下的所有文件名返回到一个列表中,不区分目录和文件

4.os.remove()

删除指定文件

5.os.rmdir()

删除指定目录

6.os.mkdir()

创建目录,只能建一层

7.os.makedirs()

创建目录,可以递归创建很多层

8.os.path.isfile()

判断指定对象是否为文件,是则返回True,否则返回False

9.os.path.isdir()

判断指定对象是否为目录,是则返回True,否则返回False

10.os.path.exists()

判断文件或目录是否存在

11.os.path.split()

返回路径的目录和文件名到一个元组中

12.os.chdir()

改变当前工作目录到指定的路径

13.os.path.getsize()

获得文件的大小,如果为目录则返回0

14.os.path.abspath()

返回绝对路径

15.os.path.join(path,name)

连接目录和文件名

16.os.path.basename(path)

返回文件名

17.os.path.dirname(path)

返回文件路径

18.os.sep

当前平台的路径分隔符

19.os.stat(path).st_size

返回文件字节单位的大小

sys模块

sys.exit(n)

参数n为0表示正常退出,其他参数为异常,可以捕获

3.sys.path

sys.path是一个列表,存放模块的搜索路径

4.sys.platform

返回当前平台

5.sys.modules

sys.modules是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方法

<div class="cnblogs_Highlighter">
<pre class="brush:python;gutter:true;">import hashlib

m=hashlib.md5()
m.update("hello world".encode("utf-8"))
print(m.hexdigest())#5eb63bbbe01eeed093cb22bb8f5acdc3

m.update("123".encode("utf-8"))
print(m.hexdigest())#46d7a9532282332f023c08fe25ff7105

n=hashlib.md5()
n.update("hello world123".encode("utf-8"))
print(n.hexdigest())#46d7a9532282332f023c08fe25ff7105

hashlib是用来加密的模块,上述第二个m.update就相当于在之前的字符串后边加上123,然后再次加密

除了md5加密方式还有sha1,sha224,sha256,sha384,sha512.

logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")

有五种日志记录方式,按等级依次是从低到高,输出方式是输出到屏幕

可是直接运行输出到屏幕的只有

原因是日志输出等级有限制,那么怎么改变等级的限制呢

这里通过上面的方法,level设置等级,format是输出格式化方式,datefmt为日期的输出格式,在添加了上述代码后再次运行屏幕会显示

这样就都能够显示了,那logging.basicConfig中filename和filemode是做什么的呢

当把上述注释了的两行恢复,那么这些日志就只会以文件的方式存储,不会再在屏幕中打印filename为存储的文件名,filemode为存储方式

接下来问题就来了,如果我既想在屏幕输出,又想在文件中存储怎么办?

第二个问题,如果我想根据不同的情况,类别,把日志分别存储怎么办?

logger = logging.getLogger(log_type)
logger.setLevel(log_LEVEL)

ch = logging.StreamHandler()
ch = setLevel(log_LEVEL)

fh = logging.FileHandler(log_file)
fh.setLevel(log_LEVEL)

formatter = logging.Formatter('输出格式')

ch.setFormatter(formatter)
fh.setFormatter(formatter)

logger.addHandler(ch)
logger.addHandler(fh)

logger.info("日志信息")

利用这种方式可通过getLogger建立不同的对象来管理不同的日志,同时可以根据情况来设置输出到屏幕,还是保存到文件,还是两者都是。

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读