Python基础----模块2

sys模块

sys模块提供了一系列有关Python运行环境的变量和函数。

1 #重点记忆
2 sys.argv           #命令行参数List,第一个元素是程序本身路径
3 sys.exit(n)        #退出执行的程序未见,正常退出时exit(0),不同于循环用的break跳出循环
4 sys.path           #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
5
6 #一般
7 sys.platform       #返回操作系统平台名称
8 sys.version        #获取Python解释程序的版本信息
9 sys.maxint         #最大的Int值

详细说明:

sys.argv方法:返回值为命令行操作的列表,模拟sql登录代码

 1 res=sys.argv
 2 print(res)
 3 username=res[2]
 4 password=res[4]
 5 if res[1] == ‘-u‘ and res[3] == ‘-p‘:
 6     if username == ‘bob‘ and password == ‘123‘:
 7         print(‘loging successful‘)
 8 else:
 9     print(‘格式不对‘)
10
11 cmd调用
12 C:\Users\Mr.chai\Desktop\PythonProject\笔记\2017.6.22>python 模块2.py -u bob -p 123
13 [‘模块2.py‘, ‘-u‘, ‘bob‘, ‘-p‘, ‘123‘]  #sys.argv返回值
14 loging successful

sys.path:返回模块的搜索路径,初始化时用PYTHONPATH环境变量的值

1 #pycharm下执行
2 print(sys.path)
3 输出结果:
4 [‘C:\\Users\\Mr.chai\\Desktop\\PythonProject\\笔记\\2017.6.22‘, ‘C:\\Users\\Mr.chai\\Desktop\\PythonProject‘, ‘C:\\Python36\\python36.zip‘, ‘C:\\Python36\\DLLs‘, ‘C:\\Python36\\lib‘, ‘C:\\Python36‘, ‘C:\\Python36\\lib\\site-packages‘]
5
6 #cmd下执行
7 C:\Users\Mr.chai\Desktop\PythonProject\笔记\2017.6.22>python 模块2.py
8 [‘C:\\Users\\Mr.chai\\Desktop\\PythonProject\\笔记\\2017.6.22‘, ‘C:\\Python36\\python36.zip‘, ‘C:\\Python36\\DLLs‘, ‘C:\\Python36\\lib‘, ‘C:\\Python36‘, ‘C:\\Python36\\lib\\site-packages‘]

pycharm下执行的‘C:\\Users\\Mr.chai\\Desktop\\PythonProject‘是pycharm给加的,以cmd下调用为准

找模块的优先级:内置模块(即python解释器下的目录)---第三方模块和自定义模块,会统一按照一个路径去找(执行文件或者导入会将目录加到sys.path下,默认加到前面)

导入自定义模块的时候,如果模块名和python解释器下的第三方模块冲突会优先到当前导入自定义模块目录文件下找。

内置模块:sys、time、os模块(测试的不太确认)

当自定义的模块需要跨目录调用的时候,需要在调用的py文件下手动加上要调用的模块的目录:

1 sys.path.append(‘module路径‘)

logging模块

默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称:用户输出消息。

默认日志会输出到当前屏幕终端

1 import logging
2 logging.debug(‘debug message‘)
3 logging.info(‘info message‘)
4 logging.warning(‘warning message‘)
5 logging.error(‘error message‘)
6 logging.critical(‘critical message‘)  

日志格式配置(不推荐该配置方式):

 1 import logging
 2 logging.basicConfig(level=logging.DEBUG,  #默认级别设置
 3                     format=‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘,    #日志输出格式
 4                     datefmt=‘%a, %d %b %Y %H:%M:%S‘,    #时间输出格式
 5                     filename=‘/tmp/test.log‘,    #日志输出目录
 6                     filemode=‘w‘)    #文件写入权限,a或w
 7
 8 logging.debug(‘debug message‘)
 9 logging.info(‘info message‘)
10 logging.warning(‘warning message‘)
11 logging.error(‘error message‘)
12 logging.critical(‘critical message‘)

配置参数:

 1 logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:
 2
 3 filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
 4 filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
 5 format:指定handler使用的日志显示格式。
 6 datefmt:指定日期时间格式。
 7 level:设置rootlogger(后边会讲解具体概念)的日志级别
 8 stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。
 9
10 format参数中可能用到的格式化串:
11 %(name)s Logger的名字
12 %(levelno)s 数字形式的日志级别
13 %(levelname)s 文本形式的日志级别
14 %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
15 %(filename)s 调用日志输出函数的模块的文件名
16 %(module)s 调用日志输出函数的模块名
17 %(funcName)s 调用日志输出函数的函数名
18 %(lineno)d 调用日志输出函数的语句所在的代码行
19 %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
20 %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
21 %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
22 %(thread)d 线程ID。可能没有
23 %(threadName)s 线程名。可能没有
24 %(process)d 进程ID。可能没有
25 %(message)s用户输出的消息

日志对象配置:(推荐日志配置方式)

 1 #使用logger对象
 2 logger_obj=logging.getLogger()
 3
 4 # 屏幕输出流
 5 cp=logging.StreamHandler()
 6 # 文件输出流
 7 fp=logging.FileHandler(‘logger.txt‘)
 8
 9 #定义格式对象
10 formatter=logging.Formatter(‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘)
11
12 #设置格式
13 cp=cp.setFormatter(formatter)
14 fp=fp.setFormatter(formatter)
15
16 #定义默认级别
17 logger_obj.setLevel(logging.DEBUG)
18
19 #输出流定义
20 logger_obj.addHandler(fp)
21 logger_obj.addHandler(cp)
22
23 logger_obj.debug(‘log info‘)
24 logger_obj.info(‘log error‘)
25 logger_obj.warning(‘log error‘)
26 logger_obj.error(‘log error‘)
27 logger_obj.critical(‘log error‘)

logging库提供了多个组件:Logger、Handler、Filter、Formatter。Logger对象提供应用程序可直接使用的接口,Handler发送日志到适当的目的地,Filter提供了过滤日志信息的方法,Formatter指定日志显示格式。另外,可以通过:logger.setLevel(logging.Debug)设置级别。

序列化模块

把对象(变量)从内存中变成可存储或传输的过程称之为序列化

python内部使用的序列化模块是pickle模块,而不同编程语言之间使用的是json模块

json模块

如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。

JSON表示的对象就是标准的JavaScript语言的对象一个子集,JSON和Python内置的数据类型对应如下:

 1 #----------------------------序列化
 2 import json
 3 dic={‘name‘:‘alvin‘,‘age‘:23,‘sex‘:‘male‘}
 4 print(type(dic))#<class ‘dict‘>
 5 data=json.dumps(dic)
 6 print("type",type(data))#<class ‘str‘>
 7 print("data",data)
 8 f=open(‘序列化对象‘,‘w‘)
 9 f.write(data)  #等价于json.dump(dic,f),等同于打开文件和写入文件两步
10 f.close()
11
12 #-----------------------------反序列化<br>
13 import json
14 f=open(‘序列化对象‘)
15 new_data=json.loads(f.read())#  等价于data=json.load(f),打开文件和读数据
16 print(type(new_data))

pickle模块

 1 ##----------------------------序列化
 2 import pickle
 3 dic={‘name‘:‘alvin‘,‘age‘:23,‘sex‘:‘male‘}
 4 print(type(dic))#<class ‘dict‘>
 5 j=pickle.dumps(dic)
 6 print(type(j))#<class ‘bytes‘>
 7 f=open(‘序列化对象_pickle‘,‘wb‘)#注意是w是写入str,wb是写入bytes,j是‘bytes‘
 8 f.write(j)  #-------------------等价于pickle.dump(dic,f)
 9 f.close()
10
11 #-------------------------反序列化
12 import pickle
13 f=open(‘序列化对象_pickle‘,‘rb‘)
14 data=pickle.loads(f.read())#  等价于data=pickle.load(f)
15 print(data[‘age‘])    

时间: 2024-07-28 16:14:18

Python基础----模块2的相关文章

python 基础 模块

---恢复内容开始--- 模块 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块 模块分为三种: 自定义模块 第三方模块 内置模块 自定义模块 模块导入 import 语句 想使用 Python 源文件,只需在另一个源文件里执行 import 语句,当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入 当我们使用import语句的时候,Python解释器的搜索路径是由一系列目录名组成的,Python解释器就依次从这些目

python基础|模块---re模块

python中的re模块是正则技术中应用.对于正则就是正则表达式,正则表达式是独立一门技术,在各个编程体系都有它的“身影".在python中在爬虫技术中,数据分析,它都是必不可少的存在.主要利用正则表达式筛选字符串中我们需要的字符串类型数据. 正则表达式基础知识.元字符和量词. 元字符 匹配作用 . 可以匹配除换行符以外的任何字符 \w 匹配字母,数字和下滑线 \d 匹配除了数字 \s 匹配空格 \W 匹配非字母,数字和下划线 \D 匹配非数字 \S 匹配非空格 ^ 匹配^字符串开头.用法(^a

python基础-------模块与包(四)

configparser模块与 subprcess 利用configparser模块配置一个类似于 windows.ini格式的文件可以包含一个或多个节(section),每个节可以有多个参数(键=值). 配置成这样一个文件 [DEFAULT]ServerAliveInterval = 45Compression = yesCompressionLevel = 9ForwardX11 = yes [bitbucket.org]User = hg [topsecret.server.com]Por

python基础-------模块

在python中,只有函数,类,模块能开辟出作用域,for循环跟while循环,还有if语句是不能开辟作用域的 模块:模块就是.py文件 1,时间模块:time模块 1 import time 2 #1时间戳:是一个float类型 3 print(time.time()) #从1970年1月1日0点0分,到目前走了多少秒 4 #1493189111.495058 5 6 #2格式化时间字符串: 给人看的 7 print(time.strftime("%Y-%m-%d %X")) #%Y

Python 基础 - 模块 Module - os模块

OS模块 操作系统功能, 涉及文件及目录等操作.不受平台限制.os模块允许一个程序不需要任何改动,同时在linux 和 windows下运行.和windows下powershell以及linux里的command操作类同. 常用操作 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字

Python基础——模块

1.模块简介 把很多函数按类别分组,分别放到不同的文件里.在Python中,一个.py文件就称之为一个模块(Module).在其他语言中称之为类库. 使用模块有什么好处? (1)大大提高了代码的可维护性: (2)编写代码不必从零开始. 模块的分类: 内置模块.第三方模块.自动以模块. 2.导入模块 模块要先导入,后使用. (1)导入模块方法 import module from module.xx.xx import xx #点表示文件夹层级.可以只导入其中一个函数. from module.x

Python 第2周 - Python基础-模块\数据运算

内容 模块初识 数据运算 bytes数据类型 python数据类型 列表的使用 元组与购物车操作 购物车程序练习 字符串常用操作 字典的使用 三级菜单实例 本周作业-购物车优化 一.模块初识 Python 库分两种:标准库(不需要安装,直接导入就可以直接使用的库).第三方库(必须安装才能使用如django).注意:编写代码时,模块名字不要跟库名字相同.系统自带模块简单举例:  sys库: 1.打印系统环境变量 sys.path: 1 import sys 2 print ("sys.path&q

python基础---模块与包

1.模块导入方法 常见的场景: 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀,导入模块可以实现功能的重复利用 import加载的模块分为四个通用类别: 1 使用python编写的代码(.py文件) 2 已被编译为共享库或DLL的C或C++扩展 3 包好一组模块的包 4 使用C编写并链接到python解释器的内置模块 a. import语句 python 内置了很多模块,比如os.sys.time等,也可以是自定义模块.模块包.C扩展等,使用import无

Python基础----模块1

time模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行"type(time.time())",返回的是float类型. (2)格式化的时间字符串(Format String): '1988-03-16' (3)元组(struct_time) :struct_time元组共有9个元素共九个元素: