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. luogu P1121 环状最大两段子段和

    嘟嘟嘟 一道说难也难说简单也简单的dp题. 我觉得我的(有篇题解)做法就属于特别简单的. 平时遇到环的问题都是断环为链,但这道题给了一种新的思路. 观察一下,最后的答案无非就这两种:xxx--xx-- ...

  2. 线段树扫描线总结(POJ 1389)

    扫描线算是线段树的一个比较特殊的用法,虽然NOIP不一定会考,但是学学还是有用的,况且也不是很难理解. 以前学过一点,不是很透,今天算是搞懂了. 就以这道题为例吧:嘟嘟嘟 题目的意思是在一个二维坐标系 ...

  3. android 中组件继承关系图,一目了然

    View继承关系图 Adapter适配器继承关系图 Activity继承关系图

  4. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 B Tomb Raider 【二进制枚举】

    任意门:http://hihocoder.com/problemset/problem/1829 Tomb Raider 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 L ...

  5. 单独使用JDBC编程

    一.jdbc编程步骤 1. 加载数据库驱动 2. 创建并获取数据库链接 3. 创建jdbc statement对象 4. 设置sql语句 5. 设置sql语句中的参数(使用preparedStatem ...

  6. LOJ 2172 「FJOI2016」所有公共子序列问题——序列自动机

    题目:https://loj.ac/problem/2172 在两个序列自动机上同时走,这样暴搜. 先走字典序小的字符,一边搜一边输出,就是按字典序排序的. 方案数很多,需要高精度?空间很小,要压位. ...

  7. Android学习笔记_55_Tween动画 (渐变、缩放、位移、旋转)

    Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变).第二类就是 Frame动画,即顺序的播放事先做好的图像,与gi ...

  8. java操作文件常用的 IO流对象

    1.描述:流是字节数据或字符数据序列.Java采用输入流对象和输出流对象来支持程序对数据的输入和输出.输入流对象提供了数据从源点流向程序的管道,程序可以从输入流对象读取数据:输出流对象提供了数据从程序 ...

  9. js 3秒后跳转页面的实现代码

    隔多少秒后自动跳转到其它页(js脚本) 方法一: $(function(){ Load(URL); }) var secs = 3; //倒计时的秒数 var URL = "<?= u ...

  10. EF执行SQL语句

    使用上下文中的Database.SqlQuery<对应的表名>(sql语句) var data = dbcenter.Database.SqlQuery<CcBusiFormview ...