# os模块
# 提供对操作系统进行调用的接口
import os
# print(os.getcwd()) # 获取当前工作目录
# print(os.chdir(r'D:PycharmProjects')) # change dir改变当前工作目录
#
# print(os.curdir) # .
# print(os.pardir) # ..
#
#
# 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下为"
", Linux下为 "
"
# 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所指向的文件或者目录的最后修改时间
# *****************************************************************
# 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]
# ************************************************************
#hashlib模塊: 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
# import hashlib
#
# m = hashlib.md5()
# m.update(b"Hello")
# m.update(b"It's me")
# print(m.digest())
# m.update(b"It's been a long time since last time we ...")
#
# print(m.digest()) # 2进制格式hash
# print(len(m.hexdigest())) # 16进制格式hash
# '''
# def digest(self, *args, **kwargs): # real signature unknown
# """ Return the digest value as a string of binary data. """
# pass
#
# def hexdigest(self, *args, **kwargs): # real signature unknown
# """ Return the digest value as a string of hexadecimal digits. """
# pass
#
# '''
# import hashlib
#
# # ######## md5 ########
#
# hash = hashlib.md5()
# hash.update('admin'.encode('utf8'))
# print(hash.hexdigest())
#
# # ######## sha1 ########
#
# hash = hashlib.sha1()
# hash.update('admin'.encode('utf8'))
# print(hash.hexdigest())
#
# # ######## sha256 ########
#
# hash = hashlib.sha256()
# hash.update('admin'.encode('utf8'))
# print(hash.hexdigest())
#
# # ######## sha384 ########
#
# hash = hashlib.sha384()
# hash.update('admin'.encode('utf8'))
# print(hash.hexdigest())
#
# # ######## sha512 ########
#
# hash = hashlib.sha512()
# hash.update('admin'.encode('utf8'))
# print(hash.hexdigest())
# **********************************************************