python学习【六】 模块

我们已经知道函数可以在同一个文件中被重用,那么模块可以在其他程序中被重用,模块基本上就是一个包含了实现某一功能的代码集合。

模块分为三种:

  • 自定义模块
  • 内置模块
  • 开源模块

我们之前讲到的os、sys、file都是内置模块。

导入模块

模块的导入有以下几种方式:

import module
import module.xx
from module import xx
from module.xx.xx import xx as rename

自定义模块

自定义模块是我们自己定义的模块,有以下几种情景:

(1)在同一级目录,如:文件夹a中有aa.py,bb.py。将aa模块导入到bb,在bb.py中写入:impot aa即可

(2)不同目录,如:文件夹a中有aa.py和文件夹b,文件夹b中有bb.py。将bb模块导入到aa,在aa.py中写入:impot b.bb即可

开源模块

开源模块是别人写好的供其他人使用的模块。通常需要下载,下载方式有两种:

第一种:

yum 
pip
apt-get

第二种:

下载源码
解压源码
进入目录
编译源码    python setup.py build
安装源码    python setup.py install

注:在使用源码安装时,需要使用到gcc编译和python开发环境,所以,需要先执行:

yum install gcc
yum install python-devel
或
apt-get python-dev

安装成功后,模块会自动安装到 sys.path 中的某个目录中,如:

/usr/lib/python2.7/site-packages/

内置模块

(1)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所指向的文件或者目录的最后修改时间

(2)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]

(3)ConfigParser

ConfigParser 是用来读取特定格式配置文件的包。当前模块的名称在 python 3.x 版本中变更为 configparser。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容。

[db]
db_host = 127.0.0.1
db_port = 22
db_user = root
db_pass = rootroot

[concurrent]
thread = 10
processor = 20

操作如下:

# 初始化ConfigParser实例,并读取配置文件
cf = ConfigParser.ConfigParser() 
cf.read("配置文件名")

# 获取所有sections
s = cf.sections()
print 'section:', s
# 输出:section: ['db', 'concurrent']

# 获取指定section 的options
o = cf.options("db")
print 'options:', o
# 输出:options: ['db_host', 'db_port', 'db_user', 'db_pass']

# 获取指定section 的配置信息
 v = cf.items("db")
print 'db:', v
# 输出:db: [('db_host', '127.0.0.1'), ('db_port', '22'), ('db_user', 'root'), ('db_pass', 'rootroot')]

# 按照类型读取指定section 的option信息
db_host = cf.get("db", "db_host")
db_port = cf.getint("db", "db_port")
db_user = cf.get("db", "db_user")
db_pass = cf.get("db", "db_pass")

# 返回的是整型的
threads = cf.getint("concurrent", "thread")
processors = cf.getint("concurrent", "processor")

print "db_host:", db_host
print "db_port:", db_port
print "db_user:", db_user
print "db_pass:", db_pass
print "thread:", threads
print "processor:", processors
# 输出如下:
db_host: 127.0.0.1
db_port: 22
db_user: root
db_pass: rootroot
thread: 10
processor: 20

  

  

 

  

 

posted @ 2015-11-28 01:22  杜瑞龙  阅读(78)  评论(0)    收藏  举报