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_names Python解释器导入的内建模块列表
sys.executable Python解释程序路径
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算法

>>> import hashlib
####### 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再来做加密.

>>> import hashlib
>>> 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和内容进行进一步的处理,然后再加密

>>> import hmac
>>> 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) 从序列中随机获取指定长度的片断
import random
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' import time # 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格式转成指定的字符串格式 #时间加减
import datetime # 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)) #时间替换

模块详解:http://www.cnblogs.com/fclbky/articles/4098204.html

格式化字符串: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)
%p AM 或者 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,os,os.path,stat]的更多相关文章

  1. python之 sys.exit() os._exit() exit() quit()的简单使用

    python之sys.exit() os._exit() exit() quit()的简单使用 1>sys.exit() >>> import sys>>> ...

  2. 【Python】 sys和os模块

    sys sys模块能使程序访问于python解释器联系紧密的变量和函数 ● sys中的一些函数和变量 argv 命令行参数构成的列表 path 查找所有可用模块所在的目录名的列表 platform 查 ...

  3. python中sys和os模块的使用

    在python中,sys,os模块是非常强大的,提供了许多对文件夹.文件和路径的操作方法 sys模块 sys.argv   #命令行执行脚本,其实它就是一个列表 ,sys.argv[0] 是程序自身路 ...

  4. Python中sys和os模块的区别

    sys: This module provides access to some variables used or maintained by the interpreter and to func ...

  5. python的sys和os模块

    一.sys sys.argv:实现从程序外部向程序传递参数.  其中sys.argv[0]为脚本的名称,所以要判断是否有参数传入可以:if len(sys.argv) > 1.  sys.exi ...

  6. python中sys和os的区别

    <os和sys的官方解释> ➤os os: This module provides a portable way of using operating system dependent ...

  7. python基础—sys与os库

    python可以用sys库打印环境变量或者查看当前文件的脚本路径,具体代码: import sysprint(sys.path[2])#打印环境变量print(sys.argv)#当前脚本路径 os库 ...

  8. python 内置模块(sys)

    sys.argv           命令行参数List,第一个元素是程序本身路径sys.exit(n)        退出程序,正常退出时exit(0)sys.version        获取Py ...

  9. Python内置模块之time、random、hashlib、OS、sys、UUID模块

    Python常用模块 1.time模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间 ...

随机推荐

  1. Jupyter notebook 的一个问题

    Traceback (most recent call last): File , in get value = obj._trait_values[self.name] KeyError: 'all ...

  2. SPOJ8093【JZPGYZ - Sevenk Love Oimaster】

    怎么全是广义后缀自动机,我\(AC\)自动机不服 这道题可以使用的算法很多,\(SA\)或者\(SAM\)应该都可以 但是我都不会 但是这毕竟是一个多串匹配问题,\(AC\)自动机还是可以刚一刚的 我 ...

  3. com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed 或者 该连接已关闭

    com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed 或者 该连接已关闭 解决方案: DBUtil公共方法如下: package ...

  4. 【luogu P1113 杂务】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1113 菜 #include <queue> #include <cstdio> #i ...

  5. SPFA 全面讲解

    SPFA全面讲解 --最短路高效算法 标签: 最短路 简介:SPFA 是1994年在西安交通大学段凡丁同学所提出,是将Dijsktra以及Bellman-Ford两种最短路算法完美结合的一个算法,效率 ...

  6. 【题解】洛谷P2426删数

    链接 https://www.luogu.org/problemnew/show/P2426 念念碎 第一次接触到区间DP(瑟瑟发抖) 所以象征性地看了一下题解 这好像是一道比较基础的区间DP吧 但是 ...

  7. Nodejs做整站转发

    刚接触nodejs,做个东西练下手,通过nodejs直接转发整站,原本想把内容全翻译成英文,但google对流量行审查,被封IP,所以就没啥用了, 效果像这样 var b = function (a, ...

  8. T4Toolbox简单了解

    使用T4模板,最令人喜欢的就是T4Toolbox了,他可以帮助我们生成多文件,并且直接包含在项目中. 环境:vs2017 T4代码高亮插件:Devart T4 Editor 插件地址:T4 Toolb ...

  9. Object C学习笔记24-关键字总结(转)

    学习Object C也有段时间了,学习的过程中涉及到了很多Object C中的关键字,本文总结一下所涉及到的关键字以及基本语法. 1.  #import #import <> 从syste ...

  10. 简明 ES6 模块

    简明 ES6 模块 1.什么是模块 模块就是一段代码,这段代码可以反复使用,经常单独写成一个文件,一旦加载会立即执行. 2.导出 导出有 2 种方式:命名导出和默认导出,分别用关键字export和ex ...