常用模块学习

 

  1. 模块介绍
  2. time &datetime模块
  3. random
  4. os
  5. sys
  6. shutil
  7. json & picle
  8. shelve
  9. xml处理
  10. yaml处理
  11. configparser
  12. hashlib
  13. subprocess
  14. logging模块

模块,用一砣代码实现了某个功能的代码集合。 

类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。

如:os 是系统相关的模块;file是文件操作相关的模块

模块分为三种:

  • 自定义模块
  • 内置标准模块(又称标准库)
  • 开源模块 

2、导入模块

Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:

1 import module
2 from module.xx.xx import xx
3 from module.xx.xx import xx as rename
4 from module.xx.xx import *

导入模块其实就是告诉Python解释器去解释那个py文件

1、导入一个py文件,解释器解释该py文件
2、导入一个包,解释器解释该包下的 __init__.py 文件

那么问题来了,导入模块时是根据那个路径作为基准来进行的呢?即:sys.path

如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append('路径') 添加。

通过os模块可以获取各种目录,例如:

>>> import sys
>>> print (sys.path)
['', '/usr/local/lib/python3.5/site-packages/Django-1.9.7-py3.5.egg', '/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python35.zip', '/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5', '/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', '/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/site-packages']
>>> 

如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append('路径') 添加。
通过os模块可以获取各种目录,例如:

import os,sys


if platform.system() == "Windows":
    BASE_DIR = '\\'.join(os.path.abspath(os.path.dirname(__file__)).split('\\')[:-1])
    print(BASE_DIR)
else:
    BASE_DIR = '/'.join(os.path.abspath(os.path.dirname(__file__)).split('/')[:-1])
    sys.path.append(BASE_DIR)

 

time &datetime模块

#_*_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())

Sat Jun 18 07:22:48 2016

>>>

print(time.ctime(time.time()-86640)) #将时间戳转为字符串格式

>>> print(time.ctime(time.time()-86640))

Fri Jun 17 07:19:37 2016

>>>

 
print(time.gmtime(time.time()-86640)) #将时间戳转换成struct_time格式

>>> print(time.gmtime(time.time()-86640))

time.struct_time(tm_year=2016, tm_mon=6, tm_mday=16, tm_hour=23, tm_min=20, tm_sec=17, tm_wday=3, tm_yday=168, tm_isdst=0)

>>> 

 

print(time.localtime(time.time()-86640)) #将时间戳转换成struct_time格式,但返回 的本地时间

>>> print(time.localtime(time.time()-86640))

time.struct_time(tm_year=2016, tm_mon=6, tm_mday=17, tm_hour=7, tm_min=21, tm_sec=18, tm_wday=4, tm_yday=169, tm_isdst=0)

>>>

 

print(time.mktime(time.localtime())) #与time.localtime()功能相反,将struct_time格式转回成时间戳格式

>>> print(time.mktime(time.localtime()))

1466205958.0

>>> 

 

#time.sleep(4) #sleep
print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将struct_time格式转成指定的字符串格式

>>> print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()))

2016-06-17 23:26:40

>>> 

 

print(time.strptime("2016-6-16","%Y-%m-%d")) #将字符串格式转换成struct_time格式

>>> print(time.strptime("2016-6-16","%Y-%m-%d"))

time.struct_time(tm_year=2016, tm_mon=6, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=168, tm_isdst=-1)

>>> 

 

 
#datetime module
 
print(datetime.date.today()) #输出格式 2016-06-18
 

>>> print(datetime.date.today())

2016-06-18

>>>

print(datetime.date.fromtimestamp(time.time()-864400)) # 将时间戳转成日期格式

>>> print(datetime.date.fromtimestamp(time.time()))

2016-06-18

>>> 

 

current_time = datetime.datetime.now() #

>>> print(datetime.datetime.now())

2016-06-18 07:32:52.193779

 

print(current_time) #输出2016-01-26 19:04:30.335935
print(current_time.timetuple()) #返回struct_time格式

>>> print(datetime.datetime.now().timetuple())

time.struct_time(tm_year=2016, tm_mon=6, tm_mday=18, tm_hour=7, tm_min=35, tm_sec=40, tm_wday=5, tm_yday=170, tm_isdst=-1)

>>>

 
#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)

 

 

radom

radom,产生随机数

 

li = []
for i in range(6):
    r = random.randrange(0,5)

    if i == 2 or i == 4:
        num = random.randrange(0,10)
        li.append(str(num))
    else:
        temp = random.randrange(65,91)
        c = chr(temp)
        li.append(c)


result = "".join(li)
print(result)

我这执行结果得到,TE5F7C

 

 

os系统模块常用方法

1、 os.name

输出字符串指示正在使用的平台。如果是Linux/Unix用户,输出为'posix',Windows则为'nt'

2、os.getcwd()

>>> print(os.getcwd()) #获取当前目录

/Users/Metasploit

>>>

3、os.listdir() #列出指定目录的所有文件及目录名,不加参数为当前目录

 

>>> print(os.listdir())

['.bash_history', '.bash_sessions', '.config', '.DS_Store', '.lesshst', '.matplotlib', '.PyCharm50', '.python_history', '.rnd', '.ShadowsocksX', '.ssh', '.subversion', '.Trash', '.vim', '.viminfo', '.wget-hsts', 'Applications', 'Applications (Parallels)', 'checkdisk.sh', 'checkdisk.txt', 'Desktop', 'dict_test.py', 'Django-1.9.7', 'Django-1.9.7.tar.gz', 'Documents', 'Downloads', 'helpme.txt', 'Library', 'lnmp1.3.tar.gz', 'monidenglu.py', 'Movies', 'Music', 'network.cfg', 'Pictures', 'Public', 'pwd_dic.txt', 'PycharmProjects', 'stuoldboy', 'sys.py']

>>> 

 4、os.remove  

os.remove()  函数用来删除一个文件。

os.curdir:   返回但前目录('.')

os.chdir(dirname): 改变工作目录到dirname

getatime(path):文件或文件夹的最后访问时间,从新纪元到访问时的秒数

getmtime(path):文件或文件夹的最后修改时间

getctime(path):文件或文件夹的创建时间

 

os.path模块:

os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录,返回bool值

os.path.exists()函数用来检验给出的路径是否真地存在 返回bool

os.path.getsize(name):获得文件大小,如果name是目录返回0L 返回long 单位是字节

os.path.abspath(name):获得绝对路径

os.path.normpath(path):规范path字符串形式, 结果一般情况下把/变为//,

os.path.split(name):将name分割成路径名和文件名,结果为(路径名,文件名.文件扩展名)(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)

os.path.splitext(filename):分离文件名与扩展名 结果为(filename,扩展名) 如果参数为一个路径 则返回(路径,'')

os.path.join(path,name): 连接目录与文件名或目录 结果为path/name

os.path.basename(path):返回文件名 实际为把path的最后一个"/"分割,返回后者。不管参数是一个路径还是文件 与os.path.split(name)相同 不同之处后者返回两个值得元组

 

os.path.dirname(path): 返回文件路径 实际为把path的最后一个"/"分割,返回前者。不管参数是一个路径还是文件

os.system()函数用来运行shell命令

 

上面仅是常见的,一下列出所有的:

 

os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果。

os.name:返回当前操作系统名称('posix', 'nt', 'os2', 'mac', 'ce' or 'riscos')

os中定义了一组文件、路径在不同操作系统中的表现形式参数,如

os.sep(文件夹分隔符,windows中是 \ )

os.extsep(扩展名分隔符,windows中是 . )

os.pathsep(目录分隔符,windows中是 ; )

os.linesep(换行分隔符,windows中是 \r\n )

os中有大量文件、路径操作的相关函数,如:

listdir(path):列举目录下的所有文件

makedir(path):创建文件夹,注:创建已存在的文件夹将异常

makedirs(path):递归式的创建文件夹,注:创建已存在的文件夹将异常

remove(filename):删除一个文件

rmdir(path):删除一个文件夹,注:删除非空的文件夹将异常

removedirs(path):递归的删除文件夹,直到有一级的文件夹非空,注:文件夹路径不能以'\'结束

rename(src,dst):给文件或文件夹改名(可以改路径,但是不能覆盖目标文件)

renames(src,dst):递归式的给文件或文件名改名

walk(path):列举path下的所有文件、文件夹

os中与进程相关的操作,如:

execl(path):运行一个程序来替代当前进程,会阻塞式运行

_exit(n):退出程序

startfile(filename):用与文件关联的程序运行,关联程序打开后,立即返回

system(cmd):运行一个程序或命令,会立即返回,并在cmd执行完成后,会返回cmd退出代码

os.path:在不同的操作系统中调用不同的模块,是一个可import的模块,这个模块中提供很多有用的操作:

abspath(path):返回path的绝对路径,若path已经是绝对路径了,则保持。

basename(path):返回path中的文件名。

commonprefix(list):返回list中的统一前缀,用于获得一组字符串的左起相同的内容

dirname(path):返回path中的文件夹部分,结果不包含'\'

exists(path):文件或文件夹是否存在

getatime(path):文件或文件夹的最后访问时间,从新纪元到访问时的秒数

getmtime(path):文件或文件夹的最后修改时间

getctime(path):文件或文件夹的创建时间

getsize(path):文件或文件夹的大小,若是文件夹返回0

isabs(path):返回是否是绝对路径

isfile(path):返回是否是文件路径

isdir(path):返回是否是文件夹路径

islink(path):返回是否是快捷方式

join(path1,path2,...):将path进行组合,若其中有绝对路径,则之前的path将被删除

normcase(path):转换路径中的间隔符

normpath(path):转换路径为系统可识别的路径

realpath(path):转换路径为绝对路径

split(path):将路径分解为(文件夹,文件名)

splitext(path):将路径分解为(其余部分,.扩展名),若文件名中没有扩展名,扩展名部分为空字符串

在操作与系统不支持的对象时,抛出OSError异常。

 

 

posted @ 2016-06-18 07:36  粗哥  阅读(255)  评论(0编辑  收藏  举报