python内置模块sys_python内置模块[sys,os,os.path,stat]

内置模块是python自带功能,在使用内置模块时,需要遵循 先导入在 使用

一、sys对象描述

sys.argv命令行参数获取,返回类型为列表,第一个元素为程序的本身的路径

sys.path返回模块的搜索路径列表,第一个元素为当前程序所在目录;初始化时使用PYTHONPATH环境变量的值

sys.modules.keys()返回所有已经导入的模块列表

sys.modules返回所有已经导入的模块字典,key模块名,value是模块路径

sys.exc_info()获取当前正在处理的异常类,exc_type,exc_value,exc_traceback当前处理的异常详细信息

sys.exc_clear()用来清除当前线程所出现的当前的或最近的错误信息

sys.exec_prefix返回python文件安装的位置

sys.exit(n)退出程序,正常退出时exit(0)

sys.hexversion获取python解释程序的版本值,16进制格式如:0x020103F0

sys.version获取python解释程序的版本信息

sys.displayhook(value)如果value非空,这个函数会把他输出到sys.stdout(详细使用参考文档)

sys.excepthook异常回溯相关

sys.stdin标准输入

sys.stdin.read()输入一行

sys.stdin.readline()从标准输入读一行,sys.stdout.write("a") 屏幕输出a

sys.stdout标准输出

sys.stdout.write(‘aaa’)标准输出内容

sys.stdout.writelines()无换行输出

sys.stderr错误相关

sys.pathform返回操作系统平台名称

sys.byteorder本地字节规则的指示器,big-endian平台的值是’big’,little-endian平台的值是’little’

sys.copyright记录python版权相关的东西

sys.api_version解释器的C的API版本

sys.version_info'final'表示最终,也有'candidate'表示候选,表示版本级别,是否有后继的发行

sys.getdefaultencoding()返回当前你所用的默认的字符编码格式

sys.getfilesystemencoding()返回将Unicode文件名转换成系统文件名的编码的名字

sys.builtin_module_namesPython解释器导入的内建模块列表

sys.executablePython解释程序路径

sys.getwindowsversion()获取Windows的版本

二、os模块对象描述

os.remove()删除文件

os.unlink()删除文件

os.rename()重命名文件

os.listdir()列出指定目录下所有文件

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

os.pardir获取当前目录的父目录字符串名:('..')

os.chdir()改变当前工作目录

os.getcwd()获取当前文件路径

os.mkdir()新建目录

os.rmdir()删除空目录(删除非空目录, 使用shutil.rmtree())

os.makedirs()创建多级目录

os.removedirs()删除多级目录

os.stat(file)获取文件属性

os.chmod(file)修改文件权限

os.utime(file)修改文件时间戳

os.name获取操作系统标识,字符串指示当前使用平台。win->'nt'; Linux->'posix'

os.sep操作系统特定的路径分隔符,win下为"\\",Linux下为"/"

os.linesep当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"

os.pathsep用于分割文件路径的字符串

os.environ获取系统环境变量

os.system()执行操作系统命令

os.execvp()启动一个新进程

os.access(path, mode)判断文件权限

os.wait()等待任何一个子进程结束,返回一个tuple,包括子进程的进程ID和退出状态信息

三、os.path模块

os.path.getctime()返回文件创返回文件大小 字节单位建时间 浮点型os.path.getsize()对象描述

os.path.split(filename)将文件路径和文件名分割(会将最后一个目录作为文件名而分离)

os.path.splitext(filename)将文件路径和文件扩展名分割成一个元组

os.path.dirname(filename)返回文件路径的目录部分

os.path.basename(filename)返回文件路径的文件名部分

os.path.join(dirname,basename)将文件路径和文件名凑成完整文件路径

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

os.path.splitunc(path)把路径分割为挂载点和文件名

os.path.normpath(path)规范path字符串形式

os.path.exists()判断文件或目录是否存在

os.path.isabs()如果path是绝对路径,返回True

os.path.realpath(path)返回path的真实路径

os.path.relpath(path[, start])从start开始计算相对路径

os.path.normcase(path)转换path的大小写和斜杠

os.path.isdir(name)判断name是不是一个目录,name不是目录就返回false

os.path.isfile(name)判断name是不是一个文件,不存在返回false

os.path.islink()判断文件是否连接文件,返回boolean

os.path.ismount()指定路径是否存在且为一个挂载点,返回boolean

os.path.samefile()是否相同路径的文件,返回boolean

os.path.getatime()返回最近访问时间 浮点型

os.path.getmtime()返回上一次修改时间 浮点型

os.path.getctime()返回文件创建时间 浮点型

os.path.getsize()返回文件大小 字节单位

os.path.commonprefix(list)返回list(多个路径)中,所有path共有的最长的路径

os.path.lexists路径存在则返回True,路径损坏也返回True

os.path.expanduser(path)把path中包含的"~"和"~user"转换成用户目录

os.path.expandvars(path)根据环境变量的值替换path中包含的”$name”和”${name}”

os.path.sameopenfile(fp1, fp2)判断fp1和fp2是否指向同一文件

os.path.samestat(stat1, stat2)判断stat tuple stat1和stat2是否指向同一个文件

os.path.splitdrive(path)一般用在windows下,返回驱动器名和路径组成的元组

os.path.walk(path, visit, arg)遍历path,给每个path执行一个函数详细见手册

os.path.supports_unicode_filenames设置是否支持unicode路径名

四、stat模块:描述os.stat()返回的文件属性列表中各值的意义对象描述

fileStats = os.stat(path)获取到的文件属性列表

fileStats[stat.ST_MODE]获取文件的模式

fileStats[stat.ST_SIZE]文件大小

fileStats[stat.ST_MTIME]文件最后修改时间

fileStats[stat.ST_ATIME]文件最后访问时间

fileStats[stat.ST_CTIME]文件创建时间

stat.S_ISDIR(fileStats[stat.ST_MODE])是否目录

stat.S_ISREG(fileStats[stat.ST_MODE])是否一般文件

stat.S_ISLNK(fileStats[stat.ST_MODE])是否连接文件

stat.S_ISSOCK(fileStats[stat.ST_MODE])是否COCK文件

stat.S_ISFIFO(fileStats[stat.ST_MODE])是否命名管道

stat.S_ISBLK(fileStats[stat.ST_MODE])是否块设备

stat.S_ISCHR(fileStats[stat.ST_MODE])是否字符设置

五、hashlib:

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

>>> importhashlib####### md5 #######

>>> hash.update(bytes('admin',encoding='utf-8'))>>> print(hash.hexdigest())

21232f297a57a5a743894a0e4a801fc3>>> print(hash.digest())

b'!#/)zW\xa5\xa7C\x89J\x0eJ\x80\x1f\xc3'

####### sha1 #######

>>> hash =hashlib.sha1()>>> hash.update(bytes('admin',encoding='utf-8'))>>> print(hash.hexdigest())

d033e22ae348aeb5660fc2140aec35850c4da997>>> print(hash.digest())

b'\xd03\xe2*\xe3H\xae\xb5f\x0f\xc2\x14\n\xec5\x85\x0cM\xa9\x97'

####### sha256 #######

>>> hash =hashlib.sha256()>>> hash.update(bytes('admin',encoding='utf-8'))>>> print(hash.hexdigest())

8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918>>> print(hash.digest())

b'\x8civ\xe5\xb5A\x04\x15\xbd\xe9\x08\xbdM\xee\x15\xdf\xb1g\xa9\xc8s\xfcK\xb8\xa8\x1fo*\xb4H\xa9\x18'

####### sha384 #######

>>> hash =hashlib.sha384()>>> hash.update(bytes('admin',encoding='utf-8'))>>> print(hash.hexdigest())

9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2

ec9f10290cdc0782>>> print(hash.digest())

b'\x9c\xa6\x94\xa9\x02\x85\xc04C,\x95PB\x1b{\x9d\xbd\\\x0fKfs\xf0_m\xbc\xe5\x80R\xba \xe4$\x80A\x95n\xe8\xc9\xa2\xec\x9f\x10)\x0c\xdc\x07\x82'

####### sha512 #######

>>> hash =hashlib.sha512()>>> hash.update(bytes('admin',encoding='utf-8'))>>> print(hash.hexdigest())

c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec>>> print(hash.digest())

b'\xc7\xadD\xcb\xadv*]\xa0\xa4R\xf9\xe8T\xfd\xc1\xe0\xe7\xa5*8\x01_#\xf3\xea\xb1\xd8\x0b\x93\x1d\xd4rcM\xfa\xc7\x1c\xd3N\xbc5\xd1j\xb7\xfb\x8a\x90\xc8\x1f\x97Q\x13\xd6\xc7S\x8d\xc6\x9d\xd8\xde\x90w\xec'

以上加密算法虽然非常厉害,但存在缺陷,即:通过密码库可以反解.所以,有必要对加密算法中添加自定义key再来做加密.

>>> importhashlib>>> hash = hashlib.md5(bytes('89oaFs09f',encoding='utf-8'))>>> hash.update(bytes('admin',encoding='utf-8'))>>> print(hash.hexdigest())

0f102151d38af213af2d4f73d459d69c>>> print(hash.digest())

b'\x0f\x10!Q\xd3\x8a\xf2\x13\xaf-Os\xd4Y\xd6\x9c'

python内置还有一个hmac模块,它内部对我们创建key和内容进行进一步的处理,然后再加密

>>> importhmac>>> h = hmac.new(bytes('898oaFs09f',encoding='utf-8'))>>> h.update(bytes('admin',encoding='utf-8'))>>> print(h.hexdigest())

17186c513df61e8b3fb4a134f474b130>>> print(h.digest())

b'\x17\x18lQ=\xf6\x1e\x8b?\xb4\xa14\xf4t\xb10'

六、random模块:对象描述

random.random()产生0-1的随机浮点数

random.uniform(a, b)产生指定范围内的随机浮点数

random.randint(a, b)产生指定范围内的随机整数

random.randrange([start], stop[, step])从一个指定步长的集合中产生随机数

random.choice(sequence)从序列中产生一个随机数

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

random.sample(sequence, k)从序列中随机获取指定长度的片断

importrandom

checkcode= ''

for i in range(4):

current= random.randrange(0,4)if current !=i:

temp= chr(random.randint(65,90))else:

temp= random.randint(0,9)

checkcode+=str(temp)print(checkcode)随机验证码

七、time&datetime&date模块datetime.date.today()本地日期对象,(用str函数可得到它的字面表示('2016-12-24'))

datetime.date.isoformat(obj)当前[年-月-日]字符串表示('2016-12-24')

datetime.date.fromtimestamp()返回一个日期对象,参数是时间戳,返回 [年-月-日]

datetime.date.weekday(obj)返回一个日期对象的星期数,周一是0

datetime.date.isoweekday(obj)返回一个日期对象的星期数,周一是1

datetime.date.isocalendar(obj)把日期对象返回一个带有年周星期的元组

datetime.datetime.today()返回一个包含本地时间(含微秒数)的datetime对象,如datetime.datetime(2016, 12, 24, 11, 1, 59, 365506)

datetime.datetime.now()返回指定时区的datetime对象,datetime.datetime(2016, 12, 24, 11, 2, 50, 132996)

datetime.datetime.utcnow()返回一个零时区的datetime对象

datetime.utcfromtimestamp(timestamp)按时间戳返回一个UTC-datetime对象

datetime.datetime.strptime('2014-03-16 12:21:21',"%Y-%m-%d %H:%M:%S")将字符串转为datetime对象,datetime.datetime.strptime('2016-01-01 12:11:12','%Y-%m-%d %X')

datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d  %H:%M:%S')将datetime对象转换为str表示形式

datetime.date.today().timetuple()转换为时间戳datetime元组对象,可用于转换时间戳

datetime.datetime.now().timetuple()转换为时间戳datetime元组对象,可用于转换时间戳

time.mktime(timetupleobj)将datetime元组对象转为时间戳

time.time()当前时间戳

time.localtime当前时间对象

time.gmtime当前UTC时间对象

#_*_coding:utf-8_*_

__author__ = 'Alex Li'

importtime#print(time.clock()) #返回处理器时间,3.3开始已废弃 , 改成了time.process_time()测量处理器运算时间,不包括sleep时间,不稳定,mac上测不出来#print(time.altzone) #返回与utc时间的时间差,以秒计算\#print(time.asctime()) #返回时间格式"Fri Aug 19 11:14:16 2016",#print(time.localtime()) #返回本地时间 的struct time对象格式#print(time.gmtime(time.time()-800000)) #返回utc时间的struc时间对象格式

#print(time.asctime(time.localtime())) #返回时间格式"Fri Aug 19 11:14:16 2016",#print(time.ctime()) #返回Fri Aug 19 12:38:29 2016 格式, 同上

#日期字符串 转成 时间戳#string_2_struct = time.strptime("2016/05/22","%Y/%m/%d") #将 日期字符串 转成 struct时间对象格式#print(string_2_struct)###struct_2_stamp = time.mktime(string_2_struct) #将struct时间对象转成时间戳#print(struct_2_stamp)

#将时间戳转为字符串格式#print(time.gmtime(time.time()-86640)) #将utc时间戳转换成struct_time格式#print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将utc struct_time格式转成指定的字符串格式

#时间加减

importdatetime#print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925#print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 2016-08-19#print(datetime.datetime.now() )#print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天#print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天#print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时#print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分

#

#c_time = datetime.datetime.now()#print(c_time.replace(minute=3,hour=2)) #时间替换

格式化字符串:strftime() 和 strptime()

date, datetime, 和 time 对象均支持使用 strftime(format) 方法,将指定的日期或时间转换为自定义的格式化字符串

相反的,datetime.strptime() 类方法却是把格式化字符串转换为 datetime 对象格式化指令含义

%a星期的简写(星期一 ~ 天:Mon, Tue, Wed, Thu, Fri, Sat, Sun)

%A星期的全写(星期一 ~ 天:Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)

%w在一个星期中的第几天( 0 表示星期天 ... 6 表示星期六)

%d在一个月中的第几天(01, 02, ..., 31)

%b月份的简写(一月 ~ 十二月:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)

%B月份的全写(一月 ~ 十二月:January, February, March, April, May, June, July, August, September, October, November, December)

%m月份(01, 02, ..., 12)

%y用两个数字表示年份(例如 2014年 == 14)

%Y用四个数字表示年份

%H二十四小时制(00, 01, ..., 23)

%I十二小时制(01, 02, ..., 11)

%pAM 或者 PM

%M分钟(00, 01, ..., 59)

%S秒(00, 01, ..., 59)

%f微秒(000000, 000001, ..., 999999)

%z与 UTC 时间的间隔 ;如果是本地时间,返回空字符串((empty), +0000, -0400, +1030)

%Z时区名称;如果是本地时间,返回空字符串((empty), UTC, EST, CST)

%j在一年中的第几天(001, 002, ..., 366)

%U在一年中的第几周,星期天作为第一天(00, 01, ..., 53)

%W在一年中的第几周,星期一作为第一天(00, 01, ..., 53)

%c用字符串表示日期和时间(Tue Aug 16 21:30:00 2014)

%x用字符串表示日期(08/16/14)

%X用字符串表示时间(21:30:00)

%%表示百分号

你可能感兴趣的:(python内置模块sys)