python基础之常用模块以及格式化输出
模块简介
模块,用一砣代码实现了某个功能的代码集合。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
如:os 是系统相关的模块;file是文件操作相关的模块
模块分为三种:自定义模块、第三方模块、内置模块,下边简单介绍一些常用模块
#_*_coding:utf-8_*_
import
time
import
datetime
print
(time.clock())
#返回处理器时间,3.3开始已废弃
print
(time.process_time())
#返回处理器时间,3.3开始已废弃
print
(time.time())
#返回当前系统时间戳
print
(time.ctime())
#输出Tue Jan 26 18:23:48 2016 ,当前系统时间
print
(time.ctime(time.time()
-
86640
))
#将时间戳转为字符串格式
print
(time.gmtime(time.time()
-
86640
))
#将时间戳转换成struct_time格式
print
(time.localtime(time.time()
-
86640
))
#将时间戳转换成struct_time格式,但返回 的本地时间
print
(time.mktime(time.localtime()))
#与time.localtime()功能相反,将struct_time格式转回成时间戳格式
#time.sleep(4) #sleep
print
(time.strftime(
"%Y-%m-%d %H:%M:%S"
,time.gmtime()) )
#将struct_time格式转成指定的字符串格式
print
(time.strptime(
"2016-01-28"
,
"%Y-%m-%d"
) )
#将字符串格式转换成struct_time格式
#datetime module
print
(datetime.date.today())
#输出格式 2016-01-26
print
(datetime.date.fromtimestamp(time.time()
-
864400
) )
#2016-01-16 将时间戳转成日期格式
current_time
=
datetime.datetime.now()
#
print
(current_time)
#输出2016-01-26 19:04:30.335935
print
(current_time.timetuple())
#返回struct_time格式
#datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])
print
(current_time.replace(
2014
,
9
,
12
))
#输出2014-09-12 19:06:24.074900,返回当前时间,但指定的值将被替换
str_to_date
=
datetime.datetime.strptime(
"21/11/06 16:30"
,
"%d/%m/%y %H:%M"
)
#将字符串转换成日期格式
new_date
=
datetime.datetime.now()
+
datetime.timedelta(days
=
10
)
#比现在加10天
new_date
=
datetime.datetime.now()
+
datetime.timedelta(days
=
-
10
)
#比现在减10天
new_date
=
datetime.datetime.now()
+
datetime.timedelta(hours
=
-
10
)
#比现在减10小时
new_date
=
datetime.datetime.now()
+
datetime.timedelta(seconds
=
120
)
#比现在+120s
print
(new_date)
time模块,time.sleep,让程序运行的时候停止一段时间,默认为秒,,下图就是先输出123,停顿5秒之后输出456
import time
print("")
time.sleep()
print("")
time.time,时间戳,表示从1970(unix的诞生时间)到现在过了多少秒
import time
print(time.time())
1466052658.7172651
time.ctime返回当前日期的字符串格式
import time
print(time.ctime())
Thu Jun ::
还可以将时间戳改为此格式
import time
print(time.ctime(time.time()))
Thu Jun ::
gmtime,将年,月,日等时间日期分割成一个对象,可以单独打印调用等
import time
a = time.gmtime(time.time())
print(a)
print(a.tm_year)
time.struct_time(tm_year=, tm_mon=, tm_mday=, tm_hour=, tm_min=, tm_sec=, tm_wday=, tm_yday=, tm_isdst=)
sys模块相关操作
sys.argv 命令行参数
List
,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(
0
)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的
Int
值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
sys.stdin 输入相关
sys.stdout 输出相关
sys.stderror 错误相关
sys.argv可以获取到用户给脚本传入的参数并根据此来执行程序
import sys
print(sys.argv)
if sys.argv[] == "hehe":
print("haha")
else:
print("heihei") D:\Users\Administrator\PycharmProjects\untitled1>python3 txt1.py
['txt1.py', '', '', ''] D:\Users\Administrator\PycharmProjects\untitled1>python3 txt1.py hehe
['txt1.py', 'hehe']
haha
sys.path,让我们看一下,结尾的site-packages是存放所有第三方模块,它是全局的,只要模块放到这里,任何路径下都可以导入,该路径基于ide,或者用sys.path.apped也可以将模块直接加入python的默认路径。
import sys
print(sys.path) ['D:\\Users\\Administrator\\PycharmProjects\\untitled1', 'D:\\Users\\Administrator\\PycharmProjects\\untitled1', 'D:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35\\python35.zip', 'D:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35\\DLLs', 'D:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35\\lib', 'D:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35', 'D:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35\\lib\\site-packages']
利用sys.stdout写一个类似进度条的程序,此写法仅仅适合2.7
import sys
import time
for i in range(100):
sys.stdout.write("#")
time.sleep(1)
3.5这样写
import sys
import time
for i in range(100):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(1)
json和pickle模块
- pickle 用于【python特有的类型】 和 【python基本数据类型】间进行转换
- json 用于【字符串】和 【python基本数据类型】 间进行转换(可用于不同语言之前转换)。
pickle的dumps方法可以将数据通过特殊的方式转换成只有python认识的特殊二进制格式,这里的二进制和普通字符二进制表示方式还是不同的。
import pickle
a = {"k":"v","key":"v}
b = pickle.dumps(a)
print(b) b'\x80\x03}q\x00(X\x03\x00\x00\x00keyq\x01X\x05\x00\x00\x00valueq\x02X\x01\x00\x00\x00kq\x03X\x01\x00\x00\x00vq\x04u.'
pickle.dump,将数据
通过特殊方式转换成只有python认识的特殊二进制格式,并写入文件。
import pickle
a = "hello"
with open("abc","wb") as f:
pickle.dump(a,f)
json和pickle的用法基本是相同的,json转换为字符串格式。
os模块,提供系统相关的功能
用于提供系统级别的操作:
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dir1/dir2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","new") 重命名文件/目录
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所指向的文件或者目录的最后修改时间
hashlib模块,用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5
import hashlib # ######## md5 ########
hash = hashlib.md5()
# help(hash.update)
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest())
print(hash.digest()) ######## sha1 ######## hash = hashlib.sha1()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest()) # ######## sha256 ######## hash = hashlib.sha256()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest()) # ######## sha384 ######## hash = hashlib.sha384()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest()) # ######## sha512 ######## hash = hashlib.sha512()
hash.update(bytes('admin', encoding='utf-8'))
print(hash.hexdigest())
以上算法表面安全,但是依然存在缺陷,容易被撞库的方式破解,所以要通过自定义key来在做加密,898oaFs09f就是自定义的key
import hashlib hash = hashlib.md5(bytes('898oaFs09f',encoding="utf-8"))
hash.update(bytes('admin',encoding="utf-8"))
print(hash.hexdigest())
python内置还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密
import hmac h = hmac.new(bytes('898oaFs09f',encoding="utf-8"))
h.update(bytes('admin',encoding="utf-8"))
print(h.hexdigest())
格式化输出之百分号方式
%[(name)][flags][width].[precision]typecode (name) 可选,用于选择指定的key
flags 可选,可供选择的值有:
+ 右对齐;正数前加正好,负数前加负号;
- 左对齐;正数前无符号,负数前加负号;
空格 右对齐;正数前加空格,负数前加负号;
右对齐;正数前无符号,负数前加负号;用0填充空白处
width 可选,占有宽度
.precision 可选,小数点后保留的位数
typecode 必选
s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置
r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
c,整数:将数字转换成其unicode对应的值,10进制范围为 <= i <= (py27则只支持0-);字符:将字符添加到指定位置
o,将整数转换成 八 进制表示,并将其格式化到指定位置
x,将整数转换成十六进制表示,并将其格式化到指定位置
d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
F,同上
g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
%,当字符串中存在格式化标志时,需要用 %%表示一个百分号
注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式 常用格式化:tpl
=
"i am %s"
%
"alex"
tpl
=
"i am %s age %d"
%
(
"alex"
,
18
)
tpl
=
"i am %(name)s age %(age)d"
%
{
"name"
:
"alex"
,
"age"
:
18
}
tpl
=
"percent %.2f"
%
99.97623
tpl
=
"i am %(pp).2f"
%
{
"pp"
:
123.425556
, }
tpl
=
"i am %.2f %%"
%
{
"pp"
:
123.425556
, }
格式化之format方式
tpl = "i am {}, age {}, {}".format("seven", , 'alex') tpl = "i am {}, age {}, {}".format(*["seven", , 'alex']) tpl = "i am {0}, age {1}, really {0}".format("seven", ) tpl = "i am {0}, age {1}, really {0}".format(*["seven", ]) tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=) tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": }) tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([, , ], [, , ]) tpl = "i am {:s}, age {:d}, money {:f}".format("seven", , 88888.1) tpl = "i am {:s}, age {:d}".format(*["seven", ]) tpl = "i am {name:s}, age {age:d}".format(name="seven", age=) tpl = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": }) tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(, , , , , 15.87623, ) tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(, , , , , 15.87623, ) tpl = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format() tpl = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=)
python基础之常用模块以及格式化输出的更多相关文章
- 十八. Python基础(18)常用模块
十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...
- python基础31[常用模块介绍]
python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的li ...
- Python全栈开发之路 【第六篇】:Python基础之常用模块
本节内容 模块分类: 好处: 标准库: help("modules") 查看所有python自带模块列表 第三方开源模块: 自定义模块: 模块调用: import module f ...
- Python基础之--常用模块
Python 模块 为了实现对程序特定功能的调用和存储,人们将代码封装起来,可以供其他程序调用,可以称之为模块. 如:os 是系统相关的模块:file是文件操作相关的模块:sys是访问python解释 ...
- Python基础之常用模块
一.time模块 1.时间表达形式: 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: 1.1.时间戳(timestamp) :通常来说,时间 ...
- Day5 - Python基础5 常用模块学习
Python 之路 Day5 - 常用模块学习 本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shel ...
- python基础(11)-常用模块
re(正则)模块 常用方法 findall() 以列表返回所有满足条件的结果 import re print(re.findall('\d','a1b2c2abc123'))#['1', '2', ' ...
- Python基础5 常用模块学习
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...
- Python基础__字符串拼接、格式化输出与复制
上一节介绍了序列的一些基本操作类型,这一节针对字符串的拼接.格式化输出以及复制的等做做详细介绍.一. 字符串的拼接 a = 'I', b = 'love', c = 'Python'. 我们的目的是: ...
随机推荐
- Clappr——开源的Web视频播放器
巴西著名的门户网站Globo.com(视频播放器),使用的是基于OSMF的Flash组件.在最近几年的发展过程中,Globo为视频平台陆续添加了不少额外功能,例如: 字幕,广告,画中画播放等.然而,由 ...
- php网页切图/js切图
PhantomJS抓取网站页面信息以及网站截图 http://phantomjs.org/download.html PHP imagegrabscreen和imagegrabwindow(截取网站缩 ...
- 论文第5章:Android绘图平台的实现
面向移动设备的矢量绘图平台设计与实现 Design and Implementation of Mobile Device-oriented Vector Drawing Platform 引用本论文 ...
- DDD:建模原语 之 四象图(转载的神文)
“模型.状态和行为特征.场景”和“四象图”,建模观的命名与立象. 建模原语:四象图 作者:achieveidea@gmail.com 命名:模型.结构特征.行为特征.场景(及其规约). 释义:模型,描 ...
- Click Models for Web Search(2) - Parameter Estimation
在Click Model中进行参数预估的方法有两种:最大似然(MLE)和期望最大(EM).至于每个click model使用哪种参数预估的方法取决于此model中的随机变量的特性.如果model中的随 ...
- Windows7 x64 系统下安装 Nodejs 并在 WebStorm 9.0.1 下搭建编译 LESS 环境
1. 打开Nodejs官网http://www.nodejs.org/,点“DOWNLOADS”,点64-bit下载“node-v0.10.33-x64.msi”. 2. 下载好后,双击“node-v ...
- iOS-UISegmentedControl-隐藏边框
原理: 1. 用tintColor属性,把整个UISEgmentControl 设置成为透明色. 2. 设置正常状态下的titleTextAttributes.和选中状态下的titleTextAttr ...
- SQL 关于apply的两种形式cross apply 和 outer apply
SQL 关于apply的两种形式cross apply 和 outer apply 例子: CREATE TABLE [dbo].[Customers]( ) COLLATE Chinese_PRC_ ...
- 一个python爬虫小程序
起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...
- mysql update时报错You are using safe update mode
在使用mysql执行update的时候,如果不是用主键当where语句,会报如下错误,使用主键用于where语句中正常. ) Error Code: . You are using safe upda ...