1.20 Python基础知识 - python常用模块-1
一、time和datetime
1、time模块
1)time.process_time()
>>> import time
>>> time.process_time()
0.171875 # 返回当前进程处理器运行时间。一般使用两处的差值计算程序花费的时间
2)time.altzone()
>>> import time
>>> time.altzone
-32400 #函数返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。
3)time.asctime()
>>> time.asctime()
'Wed Mar 15 15:17:45 2017' # 把struct_time对象转换为日期时间字符串。默认当前时间
4)time.localtime()
>>> time.localtime()
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=15, tm_hour=15, tm_min=24, tm_sec=8, tm_wday=2, tm_yday=74, tm_isdst=0) # 把秒数转换为struct_time对象(本地)。默认当前时间
5)time.gmtime()
>>> time.gmtime()
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=15, tm_hour=7, tm_min=31, tm_sec=41, tm_wday=2, tm_yday=74, tm_isdst=0) # 把秒数转换为struct_time对象(UTC)。默认当前时间
6)time.time()
>>> time.time()
1489668843.5339007 # 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。
7)time.ctime()
>>> time.ctime()
'Thu Mar 16 21:03:08 2017' # 把秒数转换为日期时间字符串。默认当前时间
8)time.strftime()
>>> time.strftime("%Y-%m-%d",time.gmtime())
'2017-03-16'
# 把struct_time对象转换为字符串。默认当前时间
9)time.mktime()
>>> time.mktime(time.gmtime())
1489641192.0 # 把struct_time对象转换为本地时间(秒)
10)time.strptime()
>>> time.strptime("2016-11-23","%Y-%m-%d")
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=23, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=328, tm_isdst=-1)
# 把字符串转换为struct_time对象(本地)
python中时间日期格式化符号:
%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 当前时区的名称
%% %号本身
2、datetime
datetime模块包括两个常量:datetime.MINYEAR和datetime.MAXYEAR,表示最小年份和最大年份,分别是1和9999
datetime模块包含:
- 表示日期对象的date对象
- 表示时间的time对象
- 表示日期和时间的datetime对象
- timedelta对象表示日期或时间的差值,可用于日期或时间的运算
- tzinfo对象和timezone对象表示时区信息
1)datetime对象
import time
import datetime # 获得datetime对象(本地当前时间)
print(datetime.datetime.today()) # 获得datetime对象(当前时间,可指定时区)
print(datetime.datetime.now(tz=None)) # 获得datetime对象(UTC当前时间)
print(datetime.datetime.utcnow()) # 获得datetime对象(指定时间戳,可指定时区)
print(datetime.datetime.fromtimestamp(time.time()))
2)timedelta对象
import datetime td1 = datetime.timedelta(hours=2)
td2 = datetime.timedelta(hours=3) # 时间差相加
print(td1+td2) # 时间差相减
print(td2-td1) # 返回时间差
print(td1*10) # 比较,返回布尔值
print(td1<td2)
二、random
1、random.random()
>>> random.random()
0.7813343339917366 # 随机小数
2、random.randint()
>>> random.randint(1,5)
2 # 在指定范围内整形数值随机取值,取值范围1≤x≤5。
3、random.randrange()
>>> random.randrange(1,5)
4 # 在指定范围内进行整形数值随机取值,取值范围1≤x<5
4、random.sample()
>>> random.sample(range(100),10)
[59, 56, 20, 7, 15, 83, 37, 60, 62, 4] # 在指定的数组中取值相应数量的数值列表
随机验证码:
import random checkcode = ''
for i in range(4):
current = random.randrange(0,4)
if current != i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0,9)
checkcode += str(temp) print(checkcode) # 输出结果 R5P0
三、string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
''
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
随机验证码:
>>> import random
>>> import strind >>> str_source = string.ascii_letters + string.digits
>>> ''.join(random.sample(str_source,6))
'Alvf8J'
四、os
os.getcwd()
# 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname")
# 改变当前脚本工作目录;相当于shell下cd os.curdir
# 返回当前目录: ('.') os.pardir
# 获取当前目录的父目录字符串名:('..') os.makedirs('dirname1/dirname2')
# 可生成多层递归目录
os.removedirs('dirname1')
# 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname')
#生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname')
# 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir('dirname')
# 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove()
# 删除一个文件 os.rename("oldname","newname")
# 重命名文件/目录 os.stat('path/filename')
# 获取文件/目录信息 os.sep
# 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" os.linesep
# 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n" os.pathsep
# 输出用于分割文件路径的字符串 os.name
# 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' os.system("bash command")
# 运行shell命令,直接显示 os.environ
# 获取系统环境变量 os.path.abspath(path)
# 返回path规范化的绝对路径 os.path.split(path)
# 将path分割成目录和文件名二元组返回 os.path.dirname(path)
# 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path)
# 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即
os.path.split(path)的第二个元素 os.path.exists(path)
# 如果path存在,返回True;如果path不存在,返回False os.path.isabs(path)
# 如果path是绝对路径,返回True os.path.isfile(path)
# 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path)
# 如果path是一个存在的目录,则返回True。否则返回False os.path.join(path1[, path2[, ...]])
# 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path)
# 返回path所指向的文件或者目录的最后存取时间 os.path.getmtime(path)
# 返回path所指向的文件或者目录的最后修改时间
五、sys
sys.argv
# 命令行参数List,第一个元素是程序本身路径 sys.exit(n)
# 退出程序,正常退出时exit(0) sys.version
# 获取Python解释程序的版本信息 sys.maxint
# 最大的Int值 sys.path
# 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform
# 返回操作系统平台名称 sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]
六、shutil
文件和目录复制、重命名和移动
1、shutil.copyfileobj()
import shutil f1 = open('info.txt')
f2 = open('info.txt_bak','w') shutil.copyfileobj(f1,f2) # 复制一份文件对象f1,命名为文件对象f2
2、shutil.copy()
shutil.copy('info.txt','info.txt_new') # 拷贝文件src到dst,如果dst为目录,则拷贝到dst目录下
3、shutil.copyfile()
4、shutil.copymode()
5、shutil.copystat()
6、shutil.copy2()
shutil.copy2(src,dst) # 拷贝文件src到dst,如果dst为目录,则拷贝到dst目录下
7、shutil.ignore_patterns()
8、shutil.copytree()
shutil.copytree(src,dst,symlinks=False,ignore=None) # 拷贝目录树src到dst
9、shutil.rmtree()
10、shutil.move()
shutil.move(src,dst) # 将文件/目录src移动到dst
11、shutil.disk_usage()
shutil.disk_usage(r'c:/') # 输出结果,返回指定path上的磁盘的空间使用情况(总数,已用,可用)
usage(total=107651411968, used=76381868032, free=31269543936)
文件压缩和解压缩
python支持常用压缩格式(.tar、.tarz和zip)文件的压缩和解压缩功能
使用shutil模块的make_archive和unpack_archive等函数,可以实现文件的压缩和解压缩功能。shutil模块实现高级别的操作,依赖于zipfile和tarfile模块模块。
>>> shutil.get_archive_formats() # 返回函数支持的压缩格式
[('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('xztar', "xz'ed tar-file"), ('zip', 'ZIP file')] >>> shutil.get_unpack_formats() # 返回函数支持的解压缩格式
[('bztar', ['.tar.bz2', '.tbz2'], "bzip2'ed tar-file"), ('gztar', ['.tar.gz', '.tgz'], "gzip'ed tar-file"), ('tar', ['.tar'], 'uncompressed tar file'), ('xztar', ['.tar.xz', '.txz'], "xz'ed tar-file"), ('zip', ['.zip'], 'ZIP file')]
12、shutil.make_archive()
shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None) # base_name:目标文件的路径,不包括文件后缀
# format:是文件格式,‘zip’,‘tar’,‘bztar’或‘gztar’
# root_dir:是压缩文件的根目录
# base_dir:是压缩文件的起始目录,默认为当前目录 # 示例代码:
>>> import shutil >>> shutil.make_archive(r'E:\office\tomcat',format='zip',root_dir=r'F:\SoftWare')
'E:\\office\\tomcat.zip'
13、shutil.unpack_archive()
shutil.unpack_archive(filename=,extract_dir=None,format=None) # filename是压缩文件的名称
# extract_dir是解压缩到的目录,默认为当前目录
# format是压缩文件的格式,如果没有指定,则使用file_name的扩展名 # 示例代码:
>>> shutil.unpack_archive(r'E:\office\tomcat.zip',r'F:\111')
>>> import os
>>> os.listdir(r'F:\111')
['dxyy.doc', 'll_com_Advaned.pdf', 'll_com_Basic.pdf', 'll_com_Web.pdf', 'Nessus-6.6.2-x64.msi']
七、json 和 pickle对象系列化
json
json 模块提供了一种很简单的方式来编码和解码JSON数据。 其中两个主要的函数是 json.dumps() 和 json.loads() , 要比其他序列化函数库如pickle的接口少得多。 下面演示如何将一个Python数据结构转换为JSON:
import json data = {
'name' : 'ACME',
'shares' : 100,
'price' : 542.23
} json_str = json.dumps(data)
下面演示如何将一个JSON编码的字符串转换回一个Python数据结构:
data = json.loads(json_str)
如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。例如:
# Writing JSON data
with open('data.json', 'w') as f:
json.dump(data, f) # Reading data back
with open('data.json', 'r') as f:
data = json.load(f)
JSON编码支持的基本数据类型为 None , bool , int , float 和 str , 以及包含这些类型数据的lists,tuples和dictionaries。 对于dictionaries,keys需要是字符串类型(字典中任何非字符串类型的key在编码时会先转换为字符串)。 为了遵循JSON规范,你应该只编码Python的lists和dictionaries。
pickle
使用 pickle 模块。为了将一个对象保存到一个文件中,可以这样做:
import pickle data = ... # Some Python object
f = open('somefile', 'wb')
pickle.dump(data, f)
为了将一个对象转储为一个字符串,可以使用 pickle.dumps() :
s = pickle.dumps(data)
为了从字节流中恢复一个对象,使用 picle.load() 或 pickle.loads() 函数。比如:
# Restore from a file
f = open('somefile', 'rb')
data = pickle.load(f) # Restore from a string
data = pickle.loads(s)
对于大多数应用程序来讲,dump() 和 load() 函数的使用就是你有效使用 pickle 模块所需的全部了。 它可适用于绝大部分Python数据类型和用户自定义类的对象实例。 如果你碰到某个库可以让你在数据库中保存/恢复Python对象或者是通过网络传输对象的话, 那么很有可能这个库的底层就使用了 pickle 模块。
pickle 是一种Python特有的自描述的数据编码。 通过自描述,被序列化后的数据包含每个对象开始和结束以及它的类型信息。 因此,你无需担心对象记录的定义,它总是能工作。 举个例子,如果要处理多个对象,你可以这样做:
>>> import pickle
>>> f = open('somedata', 'wb')
>>> pickle.dump([1, 2, 3, 4], f)
>>> pickle.dump('hello', f)
>>> pickle.dump({'Apple', 'Pear', 'Banana'}, f)
>>> f.close()
>>> f = open('somedata', 'rb')
>>> pickle.load(f)
[1, 2, 3, 4]
>>> pickle.load(f)
'hello'
>>> pickle.load(f)
{'Apple', 'Pear', 'Banana'}
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
import shelve d = shelve.open('shelve_test') #打开一个文件 class Test(object):
def __init__(self,n):
self.n = n t = Test(123)
t2 = Test(123334) name = ["alex","rain","test"]
d["test"] = name #持久化列表
d["t1"] = t #持久化类
d["t2"] = t2 d.close()
1.20 Python基础知识 - python常用模块-1的更多相关文章
- 第六章:Python基础の反射与常用模块解密
本课主题 反射 Mapping 介绍和操作实战 模块介绍和操作实战 random 模块 time 和 datetime 模块 logging 模块 sys 模块 os 模块 hashlib 模块 re ...
- 1.21 Python基础知识 - python常用模块-2
一.xml 什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 X ...
- Python基础学习之常用模块
1. 模块 告诉解释器到哪里查找模块的位置:比如sys.path.append('C:/python') 导入模块时:其所在目录中除源代码文件外,还新建了一个名为__pycache__ 的子目录,这个 ...
- 1.18 Python基础知识 - Python内置函数
官方地址:https://docs.python.org/3.5/library/functions.html abs(x): 返回数字的绝对值 all(iterable): 如果迭代器的所有元素都为 ...
- [python基础知识]python内置函数map/reduce/filter
python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- python基础知识小结-运维笔记
接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...
- Python 基础知识(一)
1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...
- Python基础知识(五)------字典
Python基础知识(四)------字典 字典 一丶什么是字典 dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 键: 必须是可哈希,(不可变的数据类型 ...
随机推荐
- 洛谷—— P2419 [USACO08JAN]牛大赛Cow Contest
https://www.luogu.org/problem/show?pid=2419 题目背景 [Usaco2008 Jan] 题目描述 N (1 ≤ N ≤ 100) cows, convenie ...
- struts2文件过滤拦截器fileUpload以及各种文件类型
本文某些内容复制自:http://zhidao.baidu.com/link?url=F0Z-FqbZ83BOj_xXp_B8rgJDzUoeVSWGgXwPNP5fEdLU1nvBK7yO4vnX_ ...
- 解决MAC下PHP连接MYSQL错误Warning: mysql_connect(): No such file or directory in conn.php
今天在mac上用php去连接mysql数据库,出现了 mac PHP Warning: mysql_connect(): [2002] No such file... 详细例如以下所看到的: Dir ...
- java反射机制剖析(二)— Class Loader
上一篇博客简要的提了一下java反射机制中涉及到的一些相关知识,那么ClassLoader就是当中之中的一个.本篇博客就具体的对ClassLoader做一个相对深入的了解. 作为了解须要知道的是.事实 ...
- vijos - P1176奇怪的数列 (递归 + 找规律)
P1176奇怪的数列 Accepted 标签:[显示标签] 背景 一天.学军数学小组的成员遇到了一个奇怪的数列,正巧信息小组的你碰到了他们. 于是他们把这个数列展示给你-- 描写叙述 这个数列是这种: ...
- 写了个关于tomcat项目部署脚本 shell
#!/bin/bash tomcat_project_path=" /server/tomcat" tomcat_cp_path="/root/tools/apache- ...
- Centos7 zabbix3.4.6的安装部署 (一)
部署zabbix主要为了监控日常主机.服务器.Web服务器.数据库.路由器.交换机等日常设备,功能强大,稳定性好 现在通过使用虚拟机VM搭建的Centos7部署zabbix服务 实现简单监控功能 本章 ...
- 25.Detours劫持技术
Detours可以用来实现劫持,他是微软亚洲研究院开发出来的工具,要实现它首先需要安装Detours. 安装地址链接:https://pan.baidu.com/s/1eTolVZs 密码:uy8x ...
- orm 通用方法——RunProc调用存储过程
该方法暂不支持带返回值的存储过程,期待能人补充指点. 定义代码: /** * 描述:执行存储过程 * 作者:Tianqi * 日期:2014-09-16 * param:rs orm.RawSeter ...
- mpvue 开发小程序
转换成vue语法, 小程序中原生的事件用@ 原生的属性用: