命令模块

  1. import commands
  2. import subprocess
  3. '''
  4. commands一般用在linux
  5. subprocess可用在linux和Windows
  6. '''
  7. # 获取命令执行后的输出结果
  8. subprocess.call('ifconfig', shell=True)
  9. subprocess.check_output(['tar -cvf tomat.tar log'],shell=True) # 执行打包命令
  10. # 获取命令执行后的输出结果,如commands.getoutput('ls -al'),与在linux中执行得到的结果相同
  11. commands.getoutput('command')
  12. print commands.getoutput('ls -l /Users/tingjio/PycharmProjects/zt1/src/log')
  13. # 获取命令执行后返回的状态码
  14. commands.getstatus('command')
  15. # 返回一个元组,第一个是状态码,0表示成功,第二个是输出的结果
  16. commands.getstatusoutput('command')

os模块

  1. import os
  2. '''
  3. 获取目录、文件信息
  4. '''
  5. # 获取指定目录下的所有文件和目录名,不包括子目录
  6. print os.listdir('/Users/tingjio/PycharmProjects/zt1/src')
  7. # 获取当前进程工作的目录
  8. print os.getcwd()
  9. # 获取文件属性,文件大小创建时间等
  10. print os.stat('/Users/tingjio/PycharmProjects/zt1/src/basetype/homework.py')
  11. # 删除多个目录
  12. # os.removedirs('/xx/xx/')
  13. # 运行shell指令
  14. os.system('command')
  15. # 连接目录与文件名或目录
  16. print os.path.join('path', '*paths')
  17. # 判断目录或文件是否存在
  18. os.path.exists('xx')
  19. # 判断是否为文件
  20. os.path.isfile('xx')
  21. # 创建目录,创建前先判断是否存在
  22. # os.mkdir('name')
  23. # 返回文件名
  24. print os.path.basename('/Users/tingjio/PycharmProjects/zt1/src/basetype/homework.py')

sys模块

  1. import datetime
  2. import sys
  3. # 返回当前PythonPath的列表
  4. sys.path
  5. # 获取命令行参数
  6. sys.argv
  7. # 退出当前python进程
  8. sys.exit
  9. # 获取当前系统平台
  10. sys.platform
  11. # 标准输入流
  12. sys.stdin
  13. # 标准输出流
  14. sys.stdout
  15. # 标准错误流
  16. sys.stderr

random模块

  1. import random
  2. # 随机获取浮点数
  3. print random.uniform(1, 20)
  4. # 随机获取整数
  5. print random.randint(1,20)
  6. # 随机获取seq的一个元素
  7. random.choice(seq)
  8. # 随机获取seq中的k个元素
  9. random.sample(seq, 'k')
  10. # 打乱list中的元素顺序
  11. random.shuffle('list')

logging模块

  1. import logging
  2. from logging.handlers import RotatingFileHandler
  3. from src.classmodule import decorator
  4. def log_basic():
  5. '''
  6. 以指定格式显示log
  7. '''
  8. logging.basicConfig(filename='web.log', level=0, format='%(asctime)s %(name)s %(levelname)s %(module)s:%(lineno)d %(message)s')
  9. # 设置第三方模块为更高级别,不显示其日志信息
  10. logging.getLogger('selenium').setLevel(logging.WARNING)
  11. logging.debug("this is debug log")
  12. logging.info("test info log")
  13. def log_roate():
  14. '''
  15. 自动备份日志
  16. 文件超过1024*0.01开始备份
  17. 最多备份5个,如果执行超过5次,从第一个备份文件开始覆盖
  18. '''
  19. format = '%(asctime)s %(name)s %(levelname)s %(module)s:%(lineno)d %(message)s'
  20. logging.basicConfig(level=20, format=format)
  21. rotateHandler = RotatingFileHandler('you.log', maxBytes=1024*0.01, backupCount=5)
  22. rotateHandler.setFormatter(logging.Formatter(format))
  23. logging.getLogger("").addHandler(rotateHandler)
  24. logging.getLogger().propagate = False
  25. logging.info("you log"*5)
  26. if __name__ == '__main__':
  27. log_basic()
  28. # 把不同模块中的日志输入到同一log文件(log的格式取决于主文件设置的格式,子文件只要导入logging模块)
  29. decorator.print_log() # 子文件输入日志
  30. # log_roate()

文件模块

  1. #!/usr/bin/env python
  2. # coding=utf-8
  3. import time
  4. import codecs
  5. def open_example(file_in):
  6. """
  7. r read
  8. w write
  9. a append 在已有内容的文件中写,使用append模式,否则原内容会被清空
  10. file_instance.read() 一次读取文件全部内容
  11. file_instance.readline() 执行一次读取一行
  12. file_instance.readlines() 一次读取全部文件放入列表中,每行是一个列表元素
  13. """
  14. file_instance = open(file_in, 'r')
  15. content = file_instance.read()
  16. # 关闭文件流
  17. file_instance.close()
  18. print content
  19. def write_example(file_in):
  20. """
  21. 向文件中追加内容
  22. file_instance.write() 写入内容到文件,不换行
  23. file_instance.writelines([]) 把列表中的所有内容写入文件,不换行
  24. """
  25. file_instance = codecs.open(file_in, encoding='utf-8', mode='a')
  26. file_instance.write(u'新的第1行'+'\n')
  27. file_instance.write(u'新的第2行'+'\n')
  28. file_instance.writelines([u'新的第3行'+'\n', u'新的第4行'+'\n'])
  29. # 把缓存内容输出到文件
  30. file_instance.flush()
  31. file_instance.close()
  32. if __name__ == "__main__":
  33. open_example('/Users/tingjio/PycharmProjects/zt1/src/modules/filetest.txt')
  34. # write_example('/Users/tingjio/PycharmProjects/zt1/src/modules/filetest.txt')

时间模块

  1. import time
  2. from datetime import datetime
  3. from datetime import timedelta
  4. def time_format():
  5. # 计算从1970年到现在的时间差,单位s
  6. print "*"*10+"time示例"+"*"*10
  7. print time.time()
  8. # 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)
  9. time1 = time.localtime()
  10. # 把tuple形式的转换为2019-06-12 10:50:39
  11. time2 = datetime(time1[0], time1[1], time1[2], time1[3], time1[4], time1[5])
  12. print time1
  13. print time2
  14. print time.gmtime()
  15. print time.strftime('%y %m %d %H:%M')
  16. print time.strftime('%y %m %d %H:%M:%S %Z')
  17. print time.strftime('%c')
  18. print time.strptime('1 Jan 2018 1:30pm', '%d %b %Y %I:%M%p')
  19. def datetime_format():
  20. print "*"*10+"datetime示例"+"*"*10
  21. # 2019-06-11 19:39:14.673215
  22. print datetime.now()
  23. print datetime.now().strftime('%y %m %d %H:%M')
  24. print datetime.now().strftime('%Y %m %d %H:%M')
  25. print datetime.now().strptime('1 Jan 2018 1:30pm', '%d %b %Y %I:%M%p')
  26. def time_delta():
  27. print "*"*10+"时间差示例"+"*"*10
  28. d1 = datetime.strptime('2018-01-03 13:30:00', '%Y-%m-%d %H:%M:%S')
  29. d2 = datetime.strptime('2018-01-01 14:20:50', '%Y-%m-%d %H:%M:%S')
  30. # 时间差
  31. delta = d1-d2
  32. print 'd1-d2时间差'
  33. print delta
  34. # 3天后
  35. now = datetime.now()
  36. print '现在时间'
  37. print now
  38. days_delta = timedelta(days=3)
  39. print '3天后时间'
  40. print now+days_delta
  41. # 2小时后
  42. now = datetime.now()
  43. print '现在时间'
  44. print now
  45. days_delta = timedelta(hours=2)
  46. print '2小时后时间'
  47. print now + days_delta
  48. # 15分钟后
  49. now = datetime.now()
  50. print '现在时间'
  51. print now
  52. days_delta = timedelta(minutes=15)
  53. print '15分钟后时间'
  54. print now + days_delta
  55. if __name__ == "__main__":
  56. time_format()
  57. datetime_format()
  58. 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')