模块(Module)的引入

import 模块名

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

模块名.函数名

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

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

from 模块名 import 函数名

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

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

搜索路径

当要引入一个模块的时候,python解释器需要对模块进行搜寻,搜寻的顺序为

1.当前目录

2.在 shell 变量 PYTHONPATH 下的每个目录。

3.默认路径,由安装过程决定的

搜索路径都存储在 system 模块的 sys.path 变量中,若我们想要寻找到我们自定义的不再当前目录的模块,那么我们可以在sys.path中

添加程序文件所在的路径。

import os
import sys
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(base_dir)

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

搜索路径中。

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

from 包名 import 模块名

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

time模块

time模块常用内置函数

1.time.time()

返回当前时间的时间戳(1970纪元后经过的浮点秒数)

2.time.localtime()

格式化时间戳为本地的时间

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()

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

time1=time.localtime()
print(time.asctime(time1))#Thu Sep 20 16:35:44 2018

4.time.ctime()

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

print(time.ctime(time.time()))#Thu Sep 20 16:42:03 2018

5.time.strftime()

time.strftime(format,time)

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

print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))#2018-09-20 16:46:30

%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秒

random模块

1.random.random()

生成一个0---1的随机浮点数

2.random.uniform()

生成一个指定范围的随机浮点数

print(random.uniform(4,7))
print(random.uniform(7,4))

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

3.random.randint()

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

print(random.randint(4,7))#   4<= n<=7

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

4.random.randrange()

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

print(random.randrange(1,100,2))#1--100之间的一个随机奇数

5.random.choic()

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

print(random.choice([1,3,4,7,8]))

6.random.sample()

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

print(random.sample([1,3,4,7,8],3))#[1,4,7]

7.random.shuffle()

将序列打乱,重排

list1=[1,3,4,7,8]
random.shuffle(list1)
print(list1)

os模块

1.os.name

对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'

print(os.name)

2.os.getcwd()

返回当前的工作目录

3.os.listdir()

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

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

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模块

1.sys.argv

sys.argv列表,用于接收外部向程序传递的参数,列表第一项为当前py文件的文件名,之后的元素为传递的参数。

例如在cmd运行py文件可在其后加参数

2.sys.exit(n)

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

3.sys.path

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

4.sys.platform

返回当前平台

5.sys.modules

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

hashlib模块

这里我们直接看一段代码

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模块

import logging

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

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

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

WARNING:root:warning
ERROR:root:error
CRITICAL:root:critical

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

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

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

Thu, 20 Sep 2018 19:33:50 模块.py[line:74] DEBUG debug
Thu, 20 Sep 2018 19:33:50 模块.py[line:75] INFO info
Thu, 20 Sep 2018 19:33:50 模块.py[line:76] WARNING warning
Thu, 20 Sep 2018 19:33:50 模块.py[line:77] ERROR error
Thu, 20 Sep 2018 19:33:50 模块.py[line:78] CRITICAL critical

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

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

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

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

import logging

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建立不同的对象来管理不同的日志,同时可以根据情况来设置输出到屏幕,还是保存到文件,还是两者都是。

configparser模块

configparser是python用来处理配置文件的模块

首先可以使用它生成一个配置文件

import configparser
config=configparser.ConfigParser()
config["DEFAULT"]={"ServerAliveInterval" : 45,
"Compression" :"yes",
"CompressionLevel" : 9,
"ForwardX11" : "yes"}
config["bitbucket.org"]={"User" : "Tom"}
config["topsecret.com"]={"Port": 50022,
"ForwardX11": "no"} with open ("example.ini","w") as configfile:
config.write(configfile)

这里也可以直接使用config.read_dict(字典)来读取内容,最后生成的配置文件为

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes [bitbucket.org]
user = Tom [topsecret.com]
port = 50022
forwardx11 = no

接下来我们对这个配置文件进行一些增删改查的操作

config.read("example.ini")
print(config.sections())#['bitbucket.org', 'topsecret.com']

这里不会显示DEFAULT,因为它是一个特殊项

print(config.defaults())
#OrderedDict([('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes')])

可以通过上述方式查看default中的内容

具体内容可以通过查看字典的方式来查看

print(config["bitbucket.org"]["user"])#Tom
print(config["DEFAULT"]["compression"])#yes

然后还有一种特殊的情况

for i in config["bitbucket.org"]:
print(i)

一般人会认为这里输出的是bitbucket.org中的键,但其实输出的是

user
serveraliveinterval
compression
compressionlevel
forwardx11

这里还会再将DEFAULT中的键输出

删除操作

删除键值对

config.remove_option("bitbucket.org","user")
config.write(open ("example.ini","w"))

删除块section

config.remove_section("topsecret.com")
config.write(open ("example.ini","w"))

判断是否存在

print(config.has_section("bitbucket.org"))

修改

config.set("bitbucket.org","user","Jerry")
config.write(open ("example.ini","w"))

这些有改变的操作要注意最后再写入文件config.write(open ("example.ini","w"))

python基础学习16----模块的更多相关文章

  1. python基础学习笔记——模块

    自定义模块 我们今天来学习一下自定义模块(也就是私人订制),我们要自定义模块,首先就要知道什么是模块啊 一个函数封装一个功能,比如现在有一个软件,不可能将所有程序都写入一个文件,所以咱们应该分文件,组 ...

  2. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  3. python基础,函数,面向对象,模块练习

    ---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? #  [] {} () None 0 2,位和字节的关系? # ...

  4. python基础学习(起步)

    目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...

  5. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  6. python基础学习10

    python基础学习 内容概要 文件内光标的移动 文件数据修改 函数简介 函数语法结构 内容详情 文件内光标的移动 with open(r'路径','r',encoding='utf8') as f: ...

  7. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  8. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  9. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  10. 十八. Python基础(18)常用模块

    十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...

随机推荐

  1. C# Web 数据注解Data Annotations、模型状态ModelState、数据验证

    C#中的模型状态与数据注解,为我们提供了很便利的请求数据的验证. 1. ModelState ModelState在进行数据验证的时候很有用的,它是: 1)验证数据,以及保存数据对应的错误信息. 2) ...

  2. Power of Matrix(uva11149+矩阵快速幂)

    Power of Matrix Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit St ...

  3. Java - Stack源码解析

    Java提高篇(三一)-----Stack 在Java中Stack类表示后进先出(LIFO)的对象堆栈.栈是一种非常常见的数据结构,它采用典型的先进后出的操作方式完成的.每一个栈都包含一个栈顶,每次出 ...

  4. Linux安装mysql教程

    安装之前需要先卸载mysql 1.1.下载压缩包 [root@guohaien package]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7 ...

  5. Codeforces339D(SummerTrainingDay06-A 线段树)

    D. Xenia and Bit Operations time limit per test:2 seconds memory limit per test:256 megabytes input: ...

  6. 排序算法(6)--exchang Sorting--交换排序[1]--Bubble Sort--冒泡排序

    1.基本思想 冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序 2.实现原理 冒泡排序是一种简单的排序算法,根据顺序两 ...

  7. Stylus基本使用

    介绍 在学习一个 Vue.js 项目的过程中,注意到源码中样式的部分并没有用熟悉的 .css 样式文件,而是发现了代码长得和 CSS 相像的 .styl 文件.这个 .styl 以前没见过啊,你是谁? ...

  8. css翻译名词术语

    原文 本书译法 其它译法(未采用) CSS - 层叠样式表.级联样式表.样式单 cascade 层叠(机制) 级联 fallback 回退(机制.措施.方案) 后备.回落.降级 selector 选择 ...

  9. jsp登录显示

    1.登录成功设置session request.getSession().setAttribute("user", user); 2.前台test <div class=&q ...

  10. OSGI企业应用开发(十)整合Spring和Mybatis框架(三)

    上篇文章中,我们已经完成了OSGI应用中Spring和Mybatis框架的整合,本文就来介绍一下,如何在其他Bundle中,使用Mybatis框架来操作数据库. 为了方便演示,我们新建一个新的Plug ...