一 os、os.path常用语法
os内置模块可以直接调用操作系统提供的接口函数,操作文件、目录
import os
os.name() #获取操作系统信息nt表示windows,posix表示linux,unix,mac os x
os.environ #获取环境变量字典
os.environ.get('key') #获取某个环境变量的值
os.mkdir(path) #创建目录
os.rmdir(path) #删除目录
os.rename('test.txt','test.py') #重命名文件test.txt
os.remove('test.txt') #删除文件
[x for x in os.listdir('.') if os.path.isdir(x)] #列出当前目录下所有目录
[x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'] #列出当前目录下所有.py文件
http://www.runoob.com/python/python-os-path.html
os.path模块主要用于文件的属性获取:官方文档:http://docs.python.org/library/os.path.html
1 os.path.abspath(path)
返回path规范化的绝对路径
2 os.path.split(path)
将path分割成目录和文件名二元组返回。
3.os.path.dirname(path)
返回path的目录。其实就是os.path.split(path)的第一个元素
4.os.path.basename(path)
返回path最后的文件名。如何path以/或 \ 结尾,那么就会返回空值。即os.path.split(path)的第二个元素。
5 os.path.commonprefix(list)
返回list中,所有path共有的最长的路径。
6 os.path.exists(path)
如果path存在,返回True;如果path不存在,返回False。
7 os.path.isabs(path)
如果path是绝对路径,返回True。
8 os.path.isfile(path)
如果path是一个存在的文件,返回True。否则返回False。
9 os.path.isdir(path)
如果path是一个存在的目录,则返回True。否则返回False。
10 os.path.join(path1[, path2[, …]])
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。
11.os.path.normcase(path)
在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。
12 os.path.normpath(path)
规范化路径。
13 os.path.splitdrive(path)
返回(drivername,fpath)元组
14 os.path.splitext(path)
分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作
15 os.path.getsize(path)
返回path的文件的大小(字节)。
16 os.path.getatime(path)
返回path所指向的文件或者目录的最后存取时间。
17 os.path.getmtime(path)
返回文件最后修改时间
二 time
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
可用函数
1)time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提 供,则以当前时间为准。
2)time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。
3)time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
4)time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为 UTC时区(0时区)的struct_time。
5)time.time():返回当前时间的时间戳。
6)time.mktime(t):将一个struct_time转化为时间戳。
7)time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式:
‘Sun Jun 20 23:21:05 1993’。如果没有参数,将会将time.localtime()作为参数传入。
8)time.sleep(secs):线程推迟指定的时间运行。单位为秒。
9)time.clock():这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的 是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)
10)time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
交互模式运行结果
三 smtplib
https://www.cnblogs.com/zhangxinqi/p/9113859.html
四 pickle模块
把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling。
序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系
pickle.dumps() #把任意对象序列化成bytes,然后就可以把bytes写入文件
pickle.dump() #直接把对象写入文件
pickle.loads() #反序列化
pickle.load() #直接从文件对象中读出内容
如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便
五 json模块
python对象转换为JSON格式,json编码是UTF-8
专业文档https://docs.python.org/3/library/json.html#json.dumps
json.dumps() #返回str,内容是标准的json
json.loads() #反序列化
json.load() #反序列化到文件对象
六 multiprocessing模块的Process类来代表一个进程对象,os模块封装了常见的系统调用
创建子进程时,只需要传入一个执行函数和函数的参数
#启动一个子进程并等待其结束
from multiprocessing import Process
import os
#子进程要执行的代码
def run_proc(name):
print('Run child process %s (%s)...' % (name,os.getpid()))
if __name__ == '__main__':
print('Parent process %s.' %os.getpid())
p = Process(target=run_proc,args=('test',))
print('child process will start.')
p.start() #启动
p.join() #可以等待子进程结束后再继续往下运行,通常用于进程间的同步
print('child process end.')
执行结果
Parent process 22080.
child process will start.
Run child process test (15016)...
child process end.
Pool类批量创建子进程
from multiprocessing import Pool
import time,os,random
def long_time_task(name):
print('Run task %s (%s)...' %(name,os.getpid()))
start = time.time()
time.sleep(random.random() *3)
end = time.time()
print('Task %s runs %0.2f seconds.' %(name,(end - start)))
if __name__ == '__main__':
print('Parent process %s.' % os.getpid())
p = Pool(5) #默认大小是CPU的核数,一次执行几个进程
for i in range(5):
p.apply_async(long_time_task,args=(i,))
print('Waiting for all subprocesses done...')
p.close()
p.join()
print('All subprocesses done.')
七 re模块,包含所有正则表达式的功能
使用r前缀,就可不用考虑转义的问题
s=r'ABC\-001' #Python字符串,其对应正则表达式即为‘ABC\-001'
match()方法判断是否匹配,如果匹配就返回一个match字符串,不匹配返回None
>>> import re
>>> re.match(r'^\d{3}\-\d{3,8}$', '010-12345')
<_sre.SRE_Match object; span=(0, 9), match='010-12345'>
>>> re.match(r'^\d{3}\-\d{3,8}$', '010 12345')
>>>
re.complie() #编译正则表达式
八 datetime
datetime模块中有一个datetime类
from datetime import datetime #导入datetime类
import datetime.datetime
datetime.strptime('2019-2-3 17:14:59','%Y-%m-%d %H:%M:%S')
now.strftime('%a,%b %d %H:%M')
from datetime import timedelta #可以通过- +计算前后时刻
九 sys
import sys
sys.path #查看Python安装路径
sys.path[0] #查看调用python解释器的目录
十 导包
from:复制一份到本地
import:引用变量的地址,如果想改变变量值使用import
十一
__name__
是模块的内置属性,执行当前模块时,值为'__main__'
,在其他模块中调用该模块时,该模块的__name__
等于模块的名称