命令模块
import commands
import subprocess
'''
commands一般用在linux
subprocess可用在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 datetime
import 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 logging
from logging.handlers import RotatingFileHandler
from src.classmodule import decorator
def 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-8
import time
import codecs
def 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 content
def 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 time
from datetime import datetime
from datetime import timedelta
def 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_delta
if __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')