Python:常用模块简介(1)

sys模块

>>> sys.platform   #返回操作系统平台名称
'win32'
>>> sys.stdin      #输入相关
<open file '<stdin>', mode 'r' at 0x000000000337B030>
>>> sys.stdout     #输出相关
<open file '<stdout>', mode 'w' at 0x000000000337B0C0>
>>> sys.maxint     #最大的int值
2147483647
>>>
>>> sys.version    #获取python解释器的版本信息
'2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)]'
>>>sys.argv  #命令参数列表

进度条

import sys
import timedef view_bar(num, total):rate = float(num) / float(total)rate_num = int(rate * 100)r = '\r%d%%' % (rate_num, )sys.stdout.write(r)   #做进度条用的sys.stdout.flush()    #flush这个缓冲区,意味着它将缓冲区中一切写入数据都flushif __name__ == '__main__':for i in range(0, 100):time.sleep(2)view_bar(i, 100)进度百分比

os模块

>>> os.getcwd()  #获取当前python的工作目录
'C:\\Users\\cmustard'
>>> print os.getcwd()
C:\Users\cmustard
>>>>>> os.chdir("d:")  #改变当前的工作目录
>>> os.getcwd()
'D:\\'
>>>>>> os.curdir  #返回当前目录
'.'
>>>>>> print os.pardir  #获取当前目录的父目录字符串
..
>>>os.makedirs("dir1/dir2")#可生成多层递归目录os.removedirs('dirname1') #若目录为空则删除,并递归到上一级目录,如若也为空,则删除,以此类推os.mkdir("dirname")  #创建文件夹os.rmdir("dirname")   #删除单级空目录,若目录不为空就无法删除os.listdir('dirname')  #列出指定目录下的所有文件和子目录,包括隐藏文件,返回一个列表
>>>
>>> os.listdir('.')
['All Users', 'Default', 'Default User', 'Default.migrated','DefaultAppPool', 'desktop.ini', 'Public']
>>>os.remove("filename")  #删除一个文件名os.rename("oldname","newname") #重命名文件/目录os.stat("dir/filename")  #获取文件或者目录信息
>>> os.stat('Default')  
nt.stat_result(st_mode=16749, st_ino=0L, st_dev=0L, st_nlink=0, st_uid=0, st_gid
=0, st_size=8192L, st_atime=1464553172L, st_mtime=1464553172L, st_ctime=14461865
10L)
>>>os.sep  #操作系统特定的路径分隔符
>>> os.sep
'\\'
>>>os.linesep  #当前平台使用的行终止符
>>> os.linesep  #win下的
'\r\n'
>>>os.pathsep  #用于分割文件路径的字符串
>>> os.pathsep
';'
>>>os.name  #字符串指示当前使用平台
>>> os.name  #win-->nt   unix-->posix
'nt'
>>>os.system('cmd')  #运行shell命令,直接显示
>>> res-os.system('net user')\\CMUSTARD 的用户帐户-----------------------------------------------------------
>>> print res  #0表示成功执行
0
>>>
os.popen('cmd')
>>> os.popen("dir")  #将返回的命令执行结果存放为文件类型
<open file 'dir', mode 'r' at 0x0000000002F19150>
>>>f=os.popen("dir")
>>> print [i for i in f]os.walk(top, topdown=True, onerror=None, followlinks=False)
这个方法返回的是一个三元tupple(dirpath, dirnames, filenames)* 其中第一个为起始路径,* 第二个为起始路径下的子文件夹,* 第三个是起始路径下的文件.* dirpath是一个string,代表目录的路径,* dirnames是一个list,包含了dirpath下所有子目录的名字,* filenames是一个list,包含了非目录文件的名字.这些名字不包含路径信息,如果需要得到全路径,需要使用 os.path.join(dirpath, name).os.environ  #获取系统环境变量os.path.abspath(path)       返回path规范化的绝对路径
>>> os.path.abspath(os.getcwd())
'C:\\Users'
>>>os.path.split(path)         将path分割成目录和文件名二元组返回
>>> os.path.split("/tmp/dd/f.txt")
('/tmp/dd', 'f.txt')
>>>os.path.dirname(path)       返回path的目录。其实就是os.path.split(path)的第一个元素
>>> os.path.dirname(os.getcwd())
'C:\\'
>>>os.path.basename(path)      返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素os.path.exists(path)        如果path存在,返回True;如果path不存在,返回False
>>> os.path.exists("e://")
True
>>>os.path.isabs(path)         如果path是绝对路径,返回Trueos.path.isfile(path)        如果path是一个存在的文件,返回True。否则返回Falseos.path.isdir(path)         如果path是一个存在的目录,则返回True。否则返回Falseos.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略os.path.getatime(path)      返回path所指向的文件或者目录的最后存取时间
>>> res=os.path.getatime('Public')
>>> res=os.path.getatime('Public')
>>> import time
>>> time.ctime(res)
'Mon May 30 04:02:15 2016'
>>>os.path.getmtime(path)      返回path所指向的文件或者目录的最后修改时间

shutil模块

高级的 文件、文件夹、压缩包 处理模块
shutil.copyfileobj(fsrc, fdst[, length])
将一个文件对象的内容拷贝到另一个文件对象中去

import shutil
shutil.copyfileobj(open("a.txt",'r'),open('b.txt','w'))

shutil.copyfile(src,dst)
拷贝文件

shutil.copyfile("old.txt",'new.txt')

shutil.copymode(src,dst)
仅仅只是拷贝权限,文件的内容和组都不发生改变

shutil.copymode("1.log","2.log")

shutil.copystat(src,dst)
仅仅只是拷贝状态信息,包括:mode bits,atime,mtime,flags

shutil.copymode("1.log","2.log")

shutil.copy2(str,dst)
机拷贝文件,也拷贝文件的状态信息

shutil.copymode("1.log","2.log")

shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件夹

shutil.copytree('folder1', 'folder2',ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #不拷贝pyc结尾和tem开头的文件

shutil.rmtree(path[, ignore_errors[, onerror]])
递归删除文件夹中的所有文件

shutil.rmtree('folder')

shutil.move(src, dst)
类似于linux的mv命令,就相当于文件夹重命名

shutil.move('folder1','folder3')

make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None)
创建压缩包并返回文路径
base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至·当前目录,否则保存至指定路径,
如:www =>保存至当前路径
如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir: 要压缩的文件夹路径(默认当前目录)
owner: 用户,默认当前用户
group: 组,默认当前组
logger: 用于记录日志,通常是logging.Logger对象

#将 /root/develop 下的文件打包放置当前程序目录import shutil
>>>shutil.make_archive('www','tar','/root/develop')
'/root/develop/www.tar'#将 /root/develop 下的文件打包放置 /root/目录下
import shutil
>>> shutil.make_archive("/root/www", 'tar', root_dir='/root/develop')
'/root/www.tar'

hashlib模块

用于加密相关的操作的模块,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

import hashlib
#MD5
hash=hashlib.md5()
hash.update('admin')
#help(hash.update)  #更新所提供的字符串对象的散列状态.
print hash.hexdigest()  #21232f297a57a5a743894a0e4a801fc3
print hash.digest()   #!#/)zW��C�JJ��,正因为输出乱码,所以要转换成16进制#sha1
hash=hashlib.sha1()
hash.update('admin')
print hash.hexdigest()  #d033e22ae348aeb5660fc2140aec35850c4da997#sha256
hash=hashlib.sha256()
hash.update('admin')
print hash.hexdigest() #8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918#sha384
hash=hashlib.sha384()
hash.update('admin')
print hash.hexdigest()#9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782#sha512
hash=hashlib.sha512()
hash.update('admin')
print hash.hexdigest()#c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec#为了防止撞库,对加密算法中添加自定义key再来做加密
#MD5
hash=hashlib.md5('key')
hash.update('admin')     #===>就是hash.update('keyadmin')
print hash.hexdigest()  #f6c45a71296c1d65db3825a7dc781bc8#python内置库中还有一个hmac模块,它内部对我们创建的key和内容进行进一步的处理后在加密
import hmac
h=hmac.new(key='key')
h.update("admin")
print h.hexdigest()  #b9092bfe47f21e2930a864b457f7c26d

random模块

import randomprint random.random()  #生成一个随机浮点数:0.0---1.0 不包括1.0

random.uniform(a,b) 用于生成一个指定范围内的随机浮点数,a,b为上下限,只要a!=b,就会生成介于两者之间的一个浮点数,若a=b,则生成的浮点数就是a

print random.uniform(3,4)  #3.51035646075
print random.uniform(3,3)  #3.0print random.uniform(4,3)  #3.48687917972

random.randint(a,b) 用于生成一个指定范围内的整数,a为下限,b为上限,生成的随机整数a<=n<=b;若a=b,则n=a;若a>b,报错

print random.randint(4,5) #5

random.randrange([start], stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1

print random.randrange(10,20,3) #从10,13,16,19 中19

random.choice(sequence) 从序列中获取一个随机元素,参数sequence表示一个有序类型,并不是一种特定类型,泛指list,tuple,字符串等

seq=['abc','cc','dd']
print random.choice(seq)  #dd

random.shuffle(x[,random]) 用于将一个列表中的元素打乱

seq=['hello','world','and','python']
random.shuffle(seq)
print seq  #['and', 'python', 'world', 'hello']

random.sample(sequence,k) 从指定序列中随机获取k个元素作为一个片段返回,sample函数不会修改原有序列

seq=[1,2,3,4,5,6,7,8,9,10]
print random.sample(seq,3) #随机取出的最后一个片段返回[10, 4, 6]

序列化

python用于序列化的两个模块一个是json模块,一个是pickle模块
json:用于字符串和字典之间进行转换
pickle:用于python特有类型和python基础类型进行转换,只适合python用

Json模块提供了四个基本功能:dumps、dump、loads、load
pickle模块提供了四个基本功能:dumps、dump、loads、load

1.py

import json
"json模块主要用于跨程序交流,json是一种通用的数据结构"
#将python字典存入文件,给其他程序读取
f=open("a.txt",'w')
src={"k1":"v1","k2":"v2","k3":"v3","k4":"v4"}
json.dump(src,f)
f.close()

json存储在文件中格式
这里写图片描述
2.py


#读取
f=open("a.txt",'r')
d=json.loads(f.read())
f.close()
print d  #{u'k3': u'v3', u'k2': u'v2', u'k1': u'v1', u'k4': u'v4'}print type(d)   #载入后既是一个字典类型的数据,这样就减少了很多麻烦<type 'dict'>print d['k1']   #v1

3.py

import pickle
"python独有的模块,为了方便用python程序之间的交流"#向文件中存取python类型的数据,这里存储列表形式
src=[1,2,3,4,5,6,7]
with open("a.txt",'w') as f:content=pickle.dump(src,f)

文件中用pickle模块序列化的列表的存储格式
这里写图片描述

4.py

#取出文件
with open("a.txt",'r')  as f:con=f.read()print pickle.loads(con)   #[1, 2, 3, 4, 5, 6, 7]
print type(pickle.loads(con))<type 'list'>

在python中原来是什么类型的数据存储在文件中,现在取出来就是什么类型的数据

load与loads的区别就是

load()
with open("a.txt",'r')  as f:print *.load(f)  #{u'k3': u'v3', u'k2': u'v2', u'k1': u'v1', u'k4': u'v4'}loads()
with open("a.txt",'r')  as f:con=f.read()print *.loads(con)   #{u'k3': u'v3', u'k2': u'v2', u'k1': u'v1', u'k4': u'v4'}  

转载于:https://www.cnblogs.com/cmustard/p/6769931.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows10 VS2019下使用CMake3.20.1打开PCL1.11.0程序

安装CMake 为什么要使用cmake cmake 是kitware 公司以及一些开源开发者在开发几个工具套件(VTK)的过程中衍生品&#xff0c;成为一个独立的开放源代码项目。 CMake是一个很强大的编译配置工具&#xff0c;支持多种平台和编译器&#xff0c;通过编写CMakeLists.txt&#xff0c…

Java 并发---ConcurrentHashMap

concurrent包下的并发容器 JDK5中添加了新的concurrent包&#xff0c;相对同步容器而言&#xff0c;并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都串行化了&#xff0c;这样保证了线程的安全性&#xff0c;所以这种方法的代价就是严重降低了并发性…

Windows10下安装QT5.14.2并用VS2019打开

安装 从官网下载&#xff1a;QT 安装方法仅需要注意&#xff1a; 1.最好不要安装在C盘。 2.根据开发需要安装功能模块&#xff0c;具体见参考文章。 https://jingyan.baidu.com/article/656db918d9292ae380249c4f.html 因为是用于PCL编程的&#xff0c;所以只选了msvc2017_64,…

C#中json序列化与反序列化

json格式概念 JSON(JavaScript Object Notation) 是一种轻量级的数据传输格式&#xff0c;其采用完全独立于语言的文本格式&#xff0c;使JSON成为理想的数据交换语言。 json由两种格式组成。 1.名称/值”对的集合&#xff0c;可以一起创建多个"名称 / 值对"。 { “…

volley用法之 以post方式发送 json 参数

需求是这样 我们需要发送一个post请求向服务器要参数。要求是发送的post参数也要是json格式。 简单一点的是这样的&#xff1a; 如果要发送的是这样简单的json格式&#xff0c;我们可以简单的使用map来实现&#xff1a; RequestQueue requestQueue Volley.newRequestQueue(get…

dns服务 很多问题,后续再研究

慕课网&#xff1a;http://www.imooc.com/video/5220 参考&#xff1a;http://jingyan.baidu.com/article/870c6fc32c028eb03fe4be30.html http://www.tuicool.com/articles/aUNzMfi http://www.07net01.com/linux/dnszhucongfuzhijiquyuchuansong_505144_1373161402.html http…

CDN架构以及原理分析

详见&#xff1a; http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp61 在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度、优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN. 使用户能以最快的速度&#xff0c;从最接近用…

基于VS2019的Eigen库安装详解

概念 Eigen是一个C开源线性代数库&#xff0c;以提供有关矩阵的的线性代数运算&#xff0c;解方程等功能。Eigen在很多领域如信号处理&#xff0c;图像处理&#xff0c;深度学习等起到重要作用&#xff0c;学习其操作方法&#xff0c;可以灵活的对线性代数、矩阵和矢量将进行计…

SQL Server2012中如何通过bak文件还原SQL Server2012数据库

1 登陆完数据库后&#xff0c;不要新建数据库&#xff0c;直接点击“数据库”然后右击"还原数据库"。 2 在"源"选项中选择"设备"。 3 选择相应的bak文件并进行添加。 4 添加完之后点击确定&#xff0c;注意在目标这一栏中数据库名称都可以不用写…

thrift服务windows环境编译失败

为什么80%的码农都做不了架构师&#xff1f;>>> 修改maven的pom文件 <!--thrift服务 api 层&#xff0c;开发时 windows系统需指定exe程序位置--> <properties> <thrift.exe.path>E:/Thrift/thrift-0.9.3.exe</thrift.exe.path&g…

《第一行代码》学习笔记35-服务Service(2)

1.Android的UI线程不安全&#xff0c;想要更新应用程序里的UI元素&#xff0c;则须在主线程中进行&#xff0c;否则会出现异常。 2.Android不允许在子线程里进行UI操作&#xff0c;对于该情况&#xff0c;Android提供了一套异步消息处理机制&#xff0c;完美解决在子线程中进行…

基于C#的ico图标制作与应用

一、简介 ICO是什么 ICO 是 Windows 开发的一种图标格式&#xff0c;是一种可以存储多张图案、多尺寸、多色板的图标文件。 一般用IcoFX软件来创建或修改ico文件。 点击下载 Ico文件创建与应用 1.单击打开按钮&#xff0c;选择一个图像文件&#xff0c;确定后一般出现以下…

第5章--高级数据管理

5.1 数值和字符处理函数 常用的数学函数 统计函数 例子&#xff1a; > x <- c(1,2,3,4,5,6,7,8) > mean(x) [1] 4.5 > sd(x) [1] 2.44949 默认情况下&#xff0c;函数scale()对矩阵或数据框的指定列进行均值为0、标准差为1的标准化&#xff1a; newdata <- scal…

GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站

GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站 引文 如果你已经购买了Nuand&#xff08;官方&#xff09;BladeRF x40&#xff0c;那么就可以在上面运行OpenBTS并可以输入一些指令来完成一些任务。一般来说HackRF&#xff0c;是一款覆盖频率最宽的SDR板卡。它几乎所有的信息…

Linux 中断处理浅析

最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想. 于是整理一下~第一阶段&#xff0d;&#xff0d;获取中断号每个CPU都有响应中断的能力, 每个CPU响应中断时都走相同的流程. 这个流程就是内核…

用scikit-learn研究局部线性嵌入(LLE)

1. scikit-learn流形学习库概述 在scikit-learn中&#xff0c;流形学习库在sklearn.manifold包中。里面实现的流形学习算法有&#xff1a; 1&#xff09;多维尺度变换MDS算法&#xff1a;这个对应的类是MDS。MDS算法希望在降维时在高维里样本之间的欧式距离关系在低维可以得到保…

iOS app 企业内部发布及HTTPS服务器配置

转自: http://www.cnblogs.com/cocoajin/p/4082488.html iOS企业内部发布及HTTPS服务器配置 一&#xff1a;所需的条件 1. 苹果开发者证书&#xff0c;企业版 299$ 版本 2. ssl 证书&#xff0c;即https使用的服务器证书 3. web服务器&#xff0c;支持https 4. 一个域名&#x…

Pytorch超简单安装教程

安装Pytorch 1.1 安装Annaconda 安装Pytorch首先需要安装Annaconda&#xff0c;按照教程&#xff0c;安装了Annaconda5.2.0的版本。 路径 记住安装路径即可&#xff0c;其余均选默认。 1.2 安装Pytorch 第一步&#xff0c;打开Anaconda Prompt 。然后输入 conda create -n…

44. 源代码解读-RocketMQ-架构

1. 前言 1.1 github源代码 https://github.com/apache/rocketmq 1.2 github其他客户端&#xff0c;比如c,php https://github.com/apache/rocketmq-externals 1.3 运行进程 RocketMQ分成两个进程运行 NamesrvBrokerNamesrv&#xff0c;命名服务&#xff0c;主要负责Broker状态管…

Pytorch基础(一) —— tensorboard的应用

一、简介与安装方法 1.1 概念 Tensorboard 是 TensorFlow 的一个工具包&#xff0c;用于展示网络图、张量的指标变化和分布情况&#xff0c;如权重W、偏置B、卷积层数、全连接层数等参数&#xff0c;使用该工具可以方便观察神经网络训练过程&#xff0c;分析学习模型训练的效…