命令模块
import commandsimport subprocess'''commands一般用在linuxsubprocess可用在linux和Windows'''# 获取命令执行后的输出结果subprocess.call('ifconfig', shell=True)subprocess.check_output(['tar -cvf tomat.tar log'],shell=True) # 执行打包命令# 获取命令执行后的输出结果,如commands.getoutput('ls -al'),与在linux中执行得到的结果相同commands.getoutput('command')print commands.getoutput('ls -l /Users/tingjio/PycharmProjects/zt1/src/log')# 获取命令执行后返回的状态码commands.getstatus('command')# 返回一个元组,第一个是状态码,0表示成功,第二个是输出的结果commands.getstatusoutput('command')
os模块
import os'''获取目录、文件信息'''# 获取指定目录下的所有文件和目录名,不包括子目录print os.listdir('/Users/tingjio/PycharmProjects/zt1/src')# 获取当前进程工作的目录print os.getcwd()# 获取文件属性,文件大小创建时间等print os.stat('/Users/tingjio/PycharmProjects/zt1/src/basetype/homework.py')# 删除多个目录# os.removedirs('/xx/xx/')# 运行shell指令os.system('command')# 连接目录与文件名或目录print os.path.join('path', '*paths')# 判断目录或文件是否存在os.path.exists('xx')# 判断是否为文件os.path.isfile('xx')# 创建目录,创建前先判断是否存在# os.mkdir('name')# 返回文件名print os.path.basename('/Users/tingjio/PycharmProjects/zt1/src/basetype/homework.py')
sys模块
import datetimeimport sys# 返回当前PythonPath的列表sys.path# 获取命令行参数sys.argv# 退出当前python进程sys.exit# 获取当前系统平台sys.platform# 标准输入流sys.stdin# 标准输出流sys.stdout# 标准错误流sys.stderr
random模块
import random# 随机获取浮点数print random.uniform(1, 20)# 随机获取整数print random.randint(1,20)# 随机获取seq的一个元素random.choice(seq)# 随机获取seq中的k个元素random.sample(seq, 'k')# 打乱list中的元素顺序random.shuffle('list')
logging模块
import loggingfrom logging.handlers import RotatingFileHandlerfrom src.classmodule import decoratordef log_basic(): ''' 以指定格式显示log ''' logging.basicConfig(filename='web.log', level=0, format='%(asctime)s %(name)s %(levelname)s %(module)s:%(lineno)d %(message)s') # 设置第三方模块为更高级别,不显示其日志信息 logging.getLogger('selenium').setLevel(logging.WARNING) logging.debug("this is debug log") logging.info("test info log")def log_roate(): ''' 自动备份日志 文件超过1024*0.01开始备份 最多备份5个,如果执行超过5次,从第一个备份文件开始覆盖 ''' format = '%(asctime)s %(name)s %(levelname)s %(module)s:%(lineno)d %(message)s' logging.basicConfig(level=20, format=format) rotateHandler = RotatingFileHandler('you.log', maxBytes=1024*0.01, backupCount=5) rotateHandler.setFormatter(logging.Formatter(format)) logging.getLogger("").addHandler(rotateHandler) logging.getLogger().propagate = False logging.info("you log"*5)if __name__ == '__main__': log_basic() # 把不同模块中的日志输入到同一log文件(log的格式取决于主文件设置的格式,子文件只要导入logging模块) decorator.print_log() # 子文件输入日志 # log_roate()
文件模块
#!/usr/bin/env python# coding=utf-8import timeimport codecsdef open_example(file_in): """ r read w write a append 在已有内容的文件中写,使用append模式,否则原内容会被清空 file_instance.read() 一次读取文件全部内容 file_instance.readline() 执行一次读取一行 file_instance.readlines() 一次读取全部文件放入列表中,每行是一个列表元素 """ file_instance = open(file_in, 'r') content = file_instance.read() # 关闭文件流 file_instance.close() print contentdef write_example(file_in): """ 向文件中追加内容 file_instance.write() 写入内容到文件,不换行 file_instance.writelines([]) 把列表中的所有内容写入文件,不换行 """ file_instance = codecs.open(file_in, encoding='utf-8', mode='a') file_instance.write(u'新的第1行'+'\n') file_instance.write(u'新的第2行'+'\n') file_instance.writelines([u'新的第3行'+'\n', u'新的第4行'+'\n']) # 把缓存内容输出到文件 file_instance.flush() file_instance.close()if __name__ == "__main__": open_example('/Users/tingjio/PycharmProjects/zt1/src/modules/filetest.txt') # write_example('/Users/tingjio/PycharmProjects/zt1/src/modules/filetest.txt')
时间模块
import timefrom datetime import datetimefrom datetime import timedeltadef time_format(): # 计算从1970年到现在的时间差,单位s print "*"*10+"time示例"+"*"*10 print time.time() # tuple类型(tm_year=2019, tm_mon=6, tm_mday=11, tm_hour=19, tm_min=37, tm_sec=17, tm_wday=1, tm_yday=162, tm_isdst=0) time1 = time.localtime() # 把tuple形式的转换为2019-06-12 10:50:39 time2 = datetime(time1[0], time1[1], time1[2], time1[3], time1[4], time1[5]) print time1 print time2 print time.gmtime() print time.strftime('%y %m %d %H:%M') print time.strftime('%y %m %d %H:%M:%S %Z') print time.strftime('%c') print time.strptime('1 Jan 2018 1:30pm', '%d %b %Y %I:%M%p')def datetime_format(): print "*"*10+"datetime示例"+"*"*10 # 2019-06-11 19:39:14.673215 print datetime.now() print datetime.now().strftime('%y %m %d %H:%M') print datetime.now().strftime('%Y %m %d %H:%M') print datetime.now().strptime('1 Jan 2018 1:30pm', '%d %b %Y %I:%M%p')def time_delta(): print "*"*10+"时间差示例"+"*"*10 d1 = datetime.strptime('2018-01-03 13:30:00', '%Y-%m-%d %H:%M:%S') d2 = datetime.strptime('2018-01-01 14:20:50', '%Y-%m-%d %H:%M:%S') # 时间差 delta = d1-d2 print 'd1-d2时间差' print delta # 3天后 now = datetime.now() print '现在时间' print now days_delta = timedelta(days=3) print '3天后时间' print now+days_delta # 2小时后 now = datetime.now() print '现在时间' print now days_delta = timedelta(hours=2) print '2小时后时间' print now + days_delta # 15分钟后 now = datetime.now() print '现在时间' print now days_delta = timedelta(minutes=15) print '15分钟后时间' print now + days_deltaif __name__ == "__main__": time_format() datetime_format() time_delta()
json模块
import json
'''
json.dumps:将json对象转化为字符串
json.loads:将字符串转化为json对象
'''
# 将json对象转化为字符串
person_dic = {'name': 'zhangsan', 'age': 23, 'phone': '18712341234'}
jsonstr = json.dumps(person_dic, encoding='utf-8')
print jsonstr
print type(jsonstr)
# 将字符串转化为json对象
json_str = '{"name": "zhangsan", "age": 23, "phone": "18712341234"}'
jsonobj = json.loads(json_str, encoding="utf-8")
print json_str
print type(jsonobj)
中文乱码问题
import sys
import time
'''
中文乱码问题
'''
# 获取系统编码格式
print sys.getfilesystemencoding()
# 将乱码的内容先解码为系统编码格式(以时间为例),再用utf-8重新编码
print time.strftime('%Y-%m-%d %H:%M:%S %Z').decode(sys.getfilesystemencoding()).encode('utf-8')