time模块,sys模块,os模块,random模块, shutil模块, json & pickle 模块,re模块
time模块:
在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素。
time.localtime([secs]) 将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。time.gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。time.time() 返回当前时间的时间戳。time.mktime(t) 将一个struct_time转化为时间戳。time.sleep(secs) 线程推迟指定的时间运行。单位为秒time.asctime([t]) 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。time.ctime([secs]) 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。time.strftime(format[, t]) 把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
|
sys模块:
sys.argv #命令行参数List,第一个元素是程序本身路径 sys.exit(n) #退出程序,正常退出时exit(0) sys.version #获取Python解释程序的版本信息 sys.maxint #最大的Int值 sys.path #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform #返回操作系统平台名称 sys.path.append(path) #将环境变量加入系统环境中sys.stdout.write('please:') #相当于不加\n的printval = sys.stdin.readline()[:-1]
实例:
####输出进度条##### import sys,time for i in range(20): sys.stdout.write("#") #标准输出 sys.stdout.flush() #实时刷新 time.sleep(0.1) #时间间隔
os模块:
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 #输出用于分割文件路径的字符串 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.chdir("目标目录") #修改当前工作目录 os.getcwd() #获取当前工作目录 os.path.getsize() #获取文件大小 os.walk() #分别返回 1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字
random模块:
random.random() 随机生成0到1之间的随机浮点数 random.uniform(a, b) 随机生成a到b之间的浮点数 random.randint(a,b) 随机生成a到b之间的整数 random.randrange(a,b,n) 随机生成n个a到b之间的整数 random.sample('abcdefghij',3) 多个字符中选取特定数量的字符 random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] ) 随机选取字符串random.shuffle(items) items = [1, 2, 3, 4, 5, 6] 洗牌
示例:
#生成随机验证码 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
shutil模块:
######高级的 文件、文件夹、压缩包 处理模块##### shutil.copyfileobj(fsrc, fdst[, length]) #将文件内容拷贝到另一个文件中,可以部分内容 shutil.copyfile(src, dst) #拷贝文件 shutil.copymode(src, dst) #仅拷贝权限。内容、组、用户均不变 shutil.copystat(src, dst) #拷贝状态的信息,包括:mode bits, atime, mtime, flags shutil.copy(src, dst) #拷贝文件和权限 shutil.copy2(src, dst) #拷贝文件和状态信息 shutil.ignore_patterns(*patterns) shutil.copytree(src, dst, symlinks=False, ignore=None) #递归的去拷贝文件 ############例如:copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))##########3 shutil.rmtree(path[, ignore_errors[, onerror]]) #递归的去删除文件 shutil.move(src, dst) #递归的去移动文件 shutil.make_archive(base_name, format,...) #创建压缩包并返回文件路径,例如:zip、tar #base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径, #如:www =>保存至当前路径 #如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/ #format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar” #root_dir: 要压缩的文件夹路径(默认当前目录) #owner: 用户,默认当前用户 #group: 组,默认当前组 #logger: 用于记录日志,通常是logging.Logger对象
shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:
import zipfile # 压缩 z = zipfile.ZipFile('laxi.zip', 'w') z.write('a.log') z.write('data.data') z.close() # 解压 z = zipfile.ZipFile('laxi.zip', 'r') z.extractall() z.close()
import tarfile # 压缩 tar = tarfile.open('your.tar','w') tar.add('/Users/wupeiqi/PycharmProjects/bbs2.zip', arcname='bbs2.zip') tar.add('/Users/wupeiqi/PycharmProjects/cmdb.zip', arcname='cmdb.zip') tar.close() # 解压 tar = tarfile.open('your.tar','r') tar.extractall() # 可设置解压地址 tar.close()
json & pickle 模块:
用于序列化的两个模块: json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps(序列化)、dump、loads(反序列化)、load pickle模块提供了四个功能:dumps、dump、loads、load
序列化: import json f = open('test.txt','w') a = {'name':'cheng','age':22} f.write(json.dumps(a)) f.close() 反序列化: import json f = open('test.txt','r') for i in f: data = json.loads(i) print(data['name'])
re模块:
'.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE) '$' 匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以 '*' 匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac") 结果为['abb', 'ab', 'a'] '+' 匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb'] '?' 匹配前一个字符1次或0次 '{m}' 匹配前一个字符m次 '{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb'] '|' 匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC' '(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c '\A' 只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的 '\Z' 匹配字符结尾,同$ '\d' 匹配数字0-9 '\D' 匹配非数字 '\w' 匹配[A-Za-z0-9] '\W' 匹配非[A-Za-z0-9] 's' 匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t' '(?P<name>...)' 分组匹配 re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict("city") 结果{'province': '3714', 'city': '81', 'birthday': '1993'}
最常用的匹配语法:
re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回 re.splitall 以匹配到的字符当做列表分隔符 re.sub 匹配字符并替换https://www.cnblogs.com/tina-python/p/5508402.html
反斜杠的困扰: 与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\\"表示。同样,匹配一个数字的"\\d"可以写成r"\d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。几个匹配模式:
re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同) M(MULTILINE): 多行模式,改变'^'和'$'的行为(参见上图) S(DOTALL): 点任意匹配模式,改变'.'的行为
os.popen就可以读出执行的内容,popen返回的是file read的对象,对其进行读取使用read()
import os
b = os.popen("dir")
print(b..read()
import os
b = os.popen("dir").read()
print(b)
方法 | 描述 |
eval() | 将字符串转换为字典 |
来源:https://www.cnblogs.com/chimeiwangliang/p/6979319.html