Python模块的介绍
Python模块的学习:
1、os模块:
下面只对os模块中几个比较常用的方法做一些简单的示例:
os.system():这个方法在shell中体现的比较多,在dos命令行中也可以执行,下面就以在dos命令行中为例,说下system方法的作用(通过这个示例,大家对system方法的实用就一目了然了):
>>> import os
>>> print(os.system('ls'))
'ls' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
1
>>> print(os.system('dir'))
驱动器 C 中的卷没有标签。
卷的序列号是 B8F2-0DE4 C:\Users 的目录 2016/04/09 23:29 <DIR> .
2016/04/09 23:29 <DIR> ..
2016/04/09 23:27 <DIR> Administrator
2016/05/15 09:24 <DIR> Administrator.02CNFVTO5VIJUAD
2016/05/01 22:21 <DIR> Public
0 个文件 0 字节
5 个目录 27,973,791,744 可用字节
0
>>>
os.path.abspath(name):获得绝对路径
print(os.path.abspath(__file__)):获取当前的文件的绝对路径
os.path.join(path,name):连接目录与文件名或目录
os.path.dirname(path):返回文件路径
应用说明:当你在一个目录的模块中调用另一个目录下的模块的时候,就需要用到上面的几个方法:
(os.path.dirname(os.path.dirname(os.path.abspath(__file__))):这个结合的使用的作用是返回当前文件的上上级目录,然后再通过os.path.join方法去拼接其它的目录和文件,就可以找到其它目录的模块或者文件了。最后结合sys模块把要找的路径加到sys.path变量中去,就可以了。)
用os.path编写平台无关的程序
os.path.abspath("1.txt") == os.path.join(os.getcwd(), "1.txt")
os.path.split(os.getcwd()) 用于分开一个目录名称中的目录部分和文件名称部分。
os.path.join(os.getcwd(), os.pardir, 'a', 'a.doc') 全成路径名称.
os.pardir 表示当前平台下上一级目录的字符 ..
os.path.getctime("/root/1.txt") 返回1.txt的ctime(创建时间)时间戳
os.path.exists(os.getcwd()) 判断文件是否存在
os.path.expanduser('~/dir') 把~扩展成用户根目录
os.path.expandvars('$PATH') 扩展环境变量PATH
os.path.isfile(os.getcwd()) 判断是否是文件名,1是0否
os.path.isdir('c:\Python26\temp') 判断是否是目录,1是0否
os.path.islink('/home/huaying/111.sql') 是否是符号连接 windows下不可用
os.path.ismout(os.getcwd()) 是否是文件系统安装点 windows下不可 用
os.path.samefile(os.getcwd(), '/home/huaying') 看看两个文件名是不是指的是同一个文件
os.path.walk('/home/huaying', test_fun, "a.c")
备注:在这里只对其它的一些方法做一些简单的介绍。
2、sys模块:
这个模块中的方法跟os中的方法相结合,可以实现一些路径的查找,(这个在上面也有提到)比如:
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))));找到所在文件的上上级目录,以后去其它目录下导入模块的时候,就可以直接使用'from 路径 import 模块' 这种形式来实现了。
当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能 够被你 使用 。注意,初始化过程仅在我们 第一次 输入模块的时候进行。另外,“sys”是“system”的缩写。
sys模块中的argv变量通过使用点号指明——sys.argv——这种方法的一个优势是这个名称不会与任何在你的程序中使用的argv变量冲突。另外,它也清晰地表明了这个名称是sys模块的一部分。
sys.argv变量是一个字符串的 列表 (列表会在后面的章节详细解释)。特别地,sys.argv包含了 命令行参数 的列表,即使用命令行传递给你的程序的参数。
如果你使用IDE编写运行这些程序,请在菜单里寻找一个指定程序的命令行参数的方法。
这里,当我们执行python using_sys.py we are arguments的时候,我们使用python命令运行using_sys.py模块,后面跟着的内容被作为参数传递给程序。Python为我们把它存储在sys.argv变量中。
记住,脚本的名称总是sys.argv列表的第一个参数。所以,在这里,'using_sys.py'是sys.argv[0]、'we'是 sys.argv[1]、'are'是sys.argv[2]以及'arguments'是sys.argv[3]。注意,Python从0开始计数,而非从1开始。
sys.path 包含输入模块的目录名列表。我们可以观察到sys.path的第一个字符串是空的——这个空的字符串表示当前目录也是sys.path的一部分,这与 PYTHONPATH环境变量是相同的。这意味着你可以直接输入位于当前目录的模块。否则,你得把你的模块放在sys.path所列的目录之一。
arg3
3、下面再简单的介绍几个模块:
json(pickle):序列化和反序列化的实现,看下面的实例。
import json
f = open('test','r')
line = f.readlines()
user_dict = line[]
print(type(user_dict))
user_dict = json.load(user_dict)
print(type(user_dict)) #输出结果
<class 'str'>
File "D:/PycharmProjects/s13/test/test.py", line , in <module>
user_dict = json.load(user_dict)
File "D:\python35\lib\json\__init__.py", line , in load
return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'
我们一步一步的进行分析,首先输出的第一行证明了,代码的前五行还没有出现问题;那么由代码的报错信息可知,是第六行出现了问题,但是user_dict确实字符串,而json.load确实是反序列化输出(就是把字符串转换成字典类型),纠结的好长时间才发现原来是test文件的问题,有的人就会问了,它会有什么问题,有问题的话,也不会出街结果了啊。这句话问的好,我们可以先看下test文件的内容:
{'name':'alex','age':26} ,其实就是这么一个简单的字典。那么我们先把单引号换成双引号试试 ==》{"name":"alex","age":26}
结果发现还是不行,这时候突然想起来还有一个loads,,,奥,这时候才发现自己犯了一个多么低级的错误,load是读取文件的内容并反序列化输出,而loads是把字符串反序列化输出,我们上面写的代码是把文件中的内容输出成一个字符串了,所以用load肯定是不行了,应该用json.loads(user_dict)才可以;如果用load 去加载的话,会更方便:
user_dict_json = json.load(open('test','r'))
print(type(user_dict_json))
print(user_dict_json)
#输出结果
<class 'dict'>
{'name': 'alex', 'age': }
现在大家应该是一目了然了吧,我相信你现在也是恍然大明白的!!!
下面再来说下json的dump和dumps方法:
大家现在都知道了,json.load和json.loads是反序列化输出一个结果,dump和dumps跟json.load和json.loads正好相反,是序列化输出到终端或者文件中去。看下面这个实例:
import os
import json str = 'This is a dump test'
dict = {'name':'alex','age':22}
print(json.dumps(str))
print(json.dumps(dict))
print(json.dump(dict)) #输出结果
"This is a dump test"
{"age": 22, "name": "alex"}
Traceback (most recent call last):
File "D:/PycharmProjects/test/test.py", line 8, in <module>
print(json.dump(dict))
TypeError: dump() missing 1 required positional argument: 'fp'
从这段代码中,我们可以总结出以下几点:
1、dumps是输出到终端的操作方法,也就是把一个类型的变量转换成str类型的操作;dump是对文件操作的方法,具体的操作是这样的,json.dump(dict,open('test','w'))
2、不管你输入的变量中带有的是单引号,还是双引号,dump和dumps都会给你转换成双引号,因为只有这样,在你做load或者loads的时候,它才能反序列化输出。
pickle的load、loads和dump、dumps的使用操作:
先来说下,pickle和json的差异:
1、pickle和json都可以实现序列化和反序列化的操作。
2、在写入文件的时候,pickle是以加密的方式写入的。
3、pickle可以对类创建的对象进行反序列化输入到文件中。
下面对pickle的load和dump做个简单的实例:
import pickle class teacher:
def __init__(self,favor,name,age):
self.favor = favor
self.name = name
self.age = age
self.asset = 0 def reduce(self):
self.asset = self.asset - 100
def gain(self,value):
self.asset += value tech1 = teacher('打球','toney',28)
tech2 = teacher('鸡汤','alex',30)
tech3 = teacher('睡觉','tim',25)
tech_list = [tech1,tech2,tech3]
tech_file = open('teacher','wb')
pickle.dump(tech_list,tech_file)
tech_file.close() class course:
li = pickle.load(open('teacher','rb'))
print(li[0])
print(li[0].name) #输出结果
<__main__.teacher object at 0x0000000000802B70>
toney
这里面涉及到了一些面向对象的知识,如果不懂面向对象的话,大家可以略过,只看pickle的dump和load方法就行,有两点需要注意的是,pickle存到文件中的数据是加密过的。在打开文件的时候,‘wb’是以二进制的形式写入。
4、接下来聊聊时间模块,这几个模块还是比较有意思的,以后在写脚本的时候也会用到的比较多:
time: 这个模块所表示的时间格式不太明显,不太容易被公众所调用。
datetime:这个模块输出的时间格式更直观,也是用的最多的:
datetime模块定义了下面这几个类:
- datetime.date:表示日期的类。常用的属性有year, month, day;(比如,当你执行datetime.date.today()的时候,就会显示今天的年月日)
- datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
- datetime.datetime:表示日期时间。(比如:datetime.datetime.today(),就会列出当前时刻的时间)
- datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
Python模块的介绍的更多相关文章
- python 模块基础介绍
从逻辑上组织代码,将一些有联系,完成特定功能相关的代码组织在一起,这些自我包含并且有组织的代码片段就是模块,将其他模块中属性附加到你的模块的操作叫做导入. 那些一个或多个.py文件组成的代码集合就称为 ...
- python 模块的介绍(一)
模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用. 简单地说,模块就是一个保存了 ...
- python模块介绍- multi-mechanize 性能测试工具
python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...
- python模块介绍- xlwt 创建xls文件(excel)
python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...
- python模块介绍- binascii 二进制和ASCII转换
python模块介绍-binascii二进制和ASCII转换 目录 项目简介 简介: Uu编码 Binhex编码 Base64编码 QP码 CRC校验和 二进制转换 其他实例 项目简介 Python中 ...
- python模块介绍- HTMLParser 简单的HTML和XHTML解析器
python模块介绍- HTMLParser 简单的HTML和XHTML解析器 2013-09-11 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq ...
- python成长之路【第十八篇】:python模块介绍、模块导入和重载
一.模块和命名空间 一般来说,Python程序往往由多个模块文件构成,通过import语句连接在一起.每个模块文件是一个独立完备的变量包,即一个命名空间.一个模块文件不能看到其他文件定义的变量名,除非 ...
- python shutil模块简单介绍
python shutil模块简单介绍 简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. shutil 模块方法: copy(src, ...
- Python 模块EasyGui详细介绍
转载:无知小德 Python 模块EasyGui详细介绍 EasyGui 官网: http://easygui.sourceforge.net 官方的教学文档:http://easygui-docs- ...
随机推荐
- js判断是手机访问还是电脑访问
<script type="text/javascript"> <!-- //平台.设备和操作系统 var syste ...
- 学习memcached的一个网站
http://www.ibm.com/developerworks/cn/java/j-memcached1/#resources
- 文件:因为懂你,所以永恒 - 零基础入门学习Python028
文件:因为懂你,所以永恒 让编程改变世界 Change the world by program 因为懂你,所以永恒 大多数的程序都遵循着:输入->处理->输出的模型,首先接受输入数据,然 ...
- hadoop学习之hadoop完全分布式集群安装
注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流.转载请注明来自: http://blog.csdn.net/ab198604/article/details/8250461 要想深入的 ...
- DSASync: Managing End-to-End Connections in Dynamic Spectrum Access Wireless LANs
其实跟上一篇是同一篇文章.不过上一篇是发表在IEEE Secon2010了,这篇是后来又增加了部分内容后的一版,收录在IEEE/ACM TRANSACTIONS ON NETWORKING, VOL. ...
- C语言中的系统时间结构体类型
在C语言涉及中经常需要定时触发事件,涉及到获取系统时间,其结构体类型有多种.Unix/Linux系统下有以下几种时间结构: 1.time_t 类型:长整型,一般用来表示从1970-01-01 00:0 ...
- sqlplus 一次奇葩问题 HTTP proxy setting has incorrect value
y@y:~$ sqlplus Error 46 initializing SQL*PlusHTTP proxy setting has incorrect valueSP2-1502: The HTT ...
- 25045操作标准子程序集41.C
/* ;程 序 最 后 修 改 时 间 0-4-3 23:43 ;软 件 标 题:25045操作标准子程序集41 ;软 件 说 明:25045 I2C 串行EEPROM 驱动 ;___________ ...
- Visual Studio 2013 Professional Key
今天发现家里的VS2013专业版过期了,于是google百度一顿大搜,多数key都不能用,不过还是找到一个key可以使用的. Visual Studio 2013 Professional Key: ...
- web字体格式及几种在线格式转换工具介绍
原文地址:http://blog.csdn.net/xiaolongtotop/article/details/8316554 目前,文字信息仍是网站最主要的内容,随着CSS3技术的不断成熟,Web字 ...