一、导入系统模块:sys
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称
# 获取系统路径,当前路径找不到,去环境变量去找 print(sys.path)
sys.argv
# (1)命令行当前目录文件下vim hello.py #!/usr/bin/env python3 #coding="utf8" import sys for i in sys.argv: print(i) # 或者 print('the first argv: ',sys.argv[0],'\n')#显示第一个参数,默认路径 print('the second argv: ',sys.argv[1],'\n')#显示第二个参数 print('the third argv: ',sys.argv[2],'\n')#显示第三个参数,以此类推 # (2)命令行当前执行python3 hello.py xxx yyy # (3)出现hello.py xxx yyy 将我们的命令展示出来
二、导入os模块:os 是程序与操作系统的一个交互接口
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下为"\t\n",Linux下为"\n" os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: 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所指向的文件或者目录的最后修改时间 os.path.getsize(path) 返回path的大小
常用的整理下:
import os # 显示当前路径 print(os.getcwd()) # 变更路径 # os.chdir("/Users/Alex/Desktop/python/4月26号模块/test") # print(os.getcwd()) # #当前下创建目录,斜杠不可转义 # os.makedirs('test/new') #非空不删 # os.removedirs('test/test/new') # 将当前目录下的文件构成列表输出 print(os.listdir()) # 返回文件信息:os.stat_result(st_mode=33188, st_ino=23190363, # st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=0, # st_atime=1493177402, st_mtime=1493177402, st_ctime=1493177402) print(os.stat('/Users/Alex/Desktop/python/4月26号模块/hello.txt')) # os.sep输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" print(os.sep) # os.linesep输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n" print(os.linesep) # os.pathsep输出用于分割文件路径的字符串 win下为;,Linux下为: print(os.pathsep) # os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' # 判断变量判断不同操作系统 print(os.name) # 直接命令行操作 print(os.system("ls -l")) #绝对路径 print(os.path.abspath("hello.txt")) res=os.path.abspath("hello.txt") # 返回路径 print(os.path.dirname(res)) # 返回路径后的文件名 print(os.path.basename(res)) # 将路径和文件名放在元组中展示 print(os.path.split(res)) # 是不是绝对路径,返回布尔值 print(os.path.isabs(res)) # 是不是文件,返回布尔值 print(os.path.isfile(res)) #judge 是不是一个存在目录,返回布尔值 print(os.path.isdir(res)) # 官方推荐路径拼接方法,别用+ s1='/Users/Alex/Desktop/python/4月26号模块' s2='hello111.txt' # print(s1+os.sep+s2) 不推荐 print(os.path.join(s1,s2))
三、摘要算法哈希库:hashlib
# 摘要算法在很多地方都有广泛的应用。 # 摘要算法不是加密算法,不能用于加密(因为无法通过摘要反推明文),只能用于防篡改. # 但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。 import hashlib m=hashlib.md5() n=hashlib.md5() # 文件过大,update全部加载到内存,只是简单加密,但是加盐以后就不太好破了 m.update("salt".encode('utf8')) n.update(b"hello") print(m.hexdigest()) print(n.hexdigest())
四、随机数模块
import random # 随机洗牌 item=[1,3,33,4,5,8,4,2] random.shuffle(item) print(item) #0-1之间的一个小数 print(random.random()) #大于1小于3的小数 print(random.uniform(1,3)) #>=1 and <=10之间的一个整数 print(random.randint(1,10)) #>=1 and <10之间的一个整数 print(random.randrange(1,10)) # 几个里面选一个,比如字母变量 ,数字变量选一个 print(random.choice([1,[2,3],(4,5)])) # 几个里面选二 print(random.sample([1,'23',[4,5]],2)) # 应用:生成验证码 import random def validate_code(): code = '' for i in range(6): num=random.randint(0,9) lower=chr(random.randint(65,90)) upper=chr(random.randint(97,122)) add=random.choice([num,lower,upper]) code="".join([code,str(add)]) return code print(validate_code())
五、时间模块
# 其他杂:函数,类有作用域,for循环没有作用域 # 时间模块 import time # (1)time.times() 时间戳,给计算机看的,里面没参数 # (2)time.strftime("%Y-%m-%d %X") 时间格式字符串,给人看的,里面有参数 # (3)time.localtime() 时间元组,结构化时间,用来操作时间的,里面默认当前时间戳 # time.struct_time(tm_year=2017, tm_mon=4, tm_mday=26, tm_hour=9, tm_min=19, tm_sec=1, tm_wday=2, tm_yday=116, tm_isdst=0) # 时间戳转换结构化时间,默认当前时间戳: import time print(time.localtime()) # 结构化时间转换时间戳 print(time.mktime(time.localtime())) # 字符串转换结构化时间 print(time.strptime("2017-4-12","%Y-%m-%d")) #结构化转字符串时间 print(time.strftime("%Y-%m-%d %X",time.localtime()))