设为首页 收藏本站
查看: 1471|回复: 0

[经验分享] Python--day5--常用模块

[复制链接]

尚未签到

发表于 2018-8-16 06:17:14 | 显示全部楼层 |阅读模式
  介绍:
  本文主要是学习python常用模块的记录,后面记录的不是很详细,以后再补。 DSC0000.gif
  2016年12月27日
DSC0001.gif

  目录:

  •   模块介绍
  •   json & pickle
  •   time  &   datetime模块 &月历
  •   random模块
  •   OS
  •   SYS
  •   shutil
  •   shelves
  •   xml
  •   yaml
  •   ConfigParser
  •   hashlib
  •   subprocess
  •   logging
  模块
  
  就是用一堆代码实现某个功能的代码集合。
  模块分三种:

  •   自定义模块
  •   内置标准模块(标准库)
  •   开源模块
  开源模块网站   :  pypi.python.org
  调用模块
DSC0002.png

  调用
  from backend.logic   import handle  ##这样导入目录必须是包的状态,也就是包下面 有一个 __init__.py
  handle.home()
  sql.py
import sys  
import  os.path
  
base_dir=os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) ##获得目录
  
sys.path.append(base_dir)  ##修改库的目录
  
from  config    import settings
  
def  db_auth(configs):
  
    if  configs.DATABASE["user"]  ==  'root'  and  configs.DATABASE["password"] == "123":
  
        print("OK")
  
        return True
  
    else:
  
        print("error")
  
def s(table,column):
  
    if  db_auth(settings):
  
        if table == 'user':
  
            user_info = {
  
                "001":['hequan',24,'engineer'],
  
                "002":['he123', 44, 'beijing'],
  
                "003":['he456', 55, 'hebei'],
  
        }
  
            return  user_info
  
    else:
  
        print("cuowu.......")
  handle.py
import sys  
import  os.path
  
base_dir=os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  
sys.path.append(base_dir)
  
from back.db.sql  import s
  
def  home():
  
    print("welcome to home page")
  
    q_data = s("user",'xxx')
  
    print("query res: {}".format(q_data))
  
def movie():
  
    print("welcome to movie page")
  
def  tv():
  
    print("welcome to tv  page")
  settings.py
DATABASE ={  
    "engine":"mysql",
  
    "host":"localhost",
  
    "port":3306,
  
    "user":"root",
  
    "password":"123",
  
}
  user_main.py
from back.logic  import handle  
handle.home()
  
结果
  
welcome to home page
  
OK
  
query res: {'003': ['he456', 55, 'hebei'], '001': ['hequan', 24, 'engineer'], '002': ['he123', 44, 'beijing']}
  json&pickle  序列化

  •   json     用于字符串和python数据类型间进行转化                           r   w
  •   pickle  用于python特有的类型和python的数据类型间进行转换      rb  wb   支持更复杂的调用函数
  都提供了4个功能:  dumps\dump\loads\load
  例子
pickle写入  
import  pickle
  
f =open("user.txt","wb")    ##json  只是w
  
info={
  
    "user":"123",
  
    "hequan":'123'
  
}
  
f.write(pickle.dumps(info))
  
f.close()
  

  

  

  
读取
  
import pickle
  
f= open("user.txt",'rb')
  
data =pickle.loads(f.read())
  
print(data)
  
dumps 与 dump的 区别
  
pickle.dump(info,f)    ##写入
  
data =pickle.load(f)   ##读取
  time
  import   time
  时间元祖
序号字段值04位数年    tm_year20081月        tm_mon1 到 122日         tm_day1到313小时      tm_hour0到234分钟    tm_min0到595秒     tm_sec0到61 (60或61 是闰秒)6一周的第几日     tm_wday0到6 (0是周一)7一年的第几日      tm_yday1到366 (儒略历)8夏令时     tm_isdst-1, 0, 1, -1是决定是否为夏令时的旗帜  获取当前时间
import  time  
localtime = time.localtime(time.time())
  
print(localtime)
  
time.struct_time(tm_year=2016, tm_mon=12, tm_mday=27, tm_hour=16, tm_min=46, tm_sec=44, tm_wday=1, tm_yday=362, tm_isdst=0)
  

  

  
获取格式化时间
  
localtime = time.asctime(time.localtime(time.time()))
  
print(localtime)
  
Tue Dec 27 16:47:56 2016
  

  

  
格式化日期
  
print(time.strftime("%Y-%m-%d  %H:%M:%S",time.localtime()))
  
2016-12-27  16:49:16
  

  

  
月历
  
import calendar
  
cat = calendar.month(2017,1)
  
print(cat)
  
    January 2017
  
Mo Tu We Th Fr Sa Su
  
                   1
  
2  3  4  5  6  7  8
  
9 10 11 12 13 14 15
  
16 17 18 19 20 21 22
  
23 24 25 26 27 28 29
  
30 31
  

  

  

  
datetime
  

  

  
import datetime
  
date = datetime.datetime.now()
  
print(date)
  
2016-12-27 16:54:42.472913
  random模块
  随机数
  random.randint(a, b),                           用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
  random.randrange([start], stop[, step])  从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。
  os模块
  os.popen("dir").read()     执行命令,暂时保存到一个地方
  os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
  os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
  os.curdir  返回当前目录: ('.')
  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所指向的文件或者目录的最后修改时间
  SYS模块
  sys.argv           命令行参数List,第一个元素是程序本身路径
  sys.exit(n)        退出程序,正常退出时exit(0)
  sys.version        获取Python解释程序的版本信息
  sys.maxint         最大的Int值
  sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
  sys.platform       返回操作系统平台名称
  sys.stdout.write('please:')
  val = sys.stdin.readline()[:-1]
  shutil 文件  文件夹 处理模块
  shutil.copyfileobj(fsrc, fdst[, length])
  将文件内容拷贝到另一个文件中,可以部分内容
  def copyfileobj(fsrc, fdst, length=16*1024):
  """copy data from file-like object fsrc to file-like object fdst"""
  while 1:
  buf = fsrc.read(length)
  if not buf:
  break
  fdst.write(buf)
  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*'))
  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 两个模块来进行的
  shelve
  是一个简单的k,v 将内存数据通过文件持久化的模块,支持pickle
  import shelve
  d = shelve.open('shelve_test') #打开一个文件
  class Test(object):
  def __init__(self,n):
  self.n = n
  t = Test(123)
  t2 = Test(123334)
  name = ["alex","rain","test"]
  d["test"] = name #持久化列表
  d["t1"] = t      #持久化类
  d["t2"] = t2
  d.close()
  xml模块
  实现不同语言或程序直接进行数据交换   <>
  yaml
  http://pyyaml.org/wiki/PyYAMLDocumentation
  configparser模块
  用于生成和修改常见配置文档。
#!/usr/bin/env python  
# -*- coding: utf-8 -*-
  
import configparser
  
config = configparser.ConfigParser()
  
config["DEFAULT"] = {'ServerAliveInterval': '45',
  
                      'Compression': 'yes',
  
                     'CompressionLevel': '9'}
  
config['bitbucket.org'] = {}
  
config['bitbucket.org']['User'] = 'hg'
  
config['topsecret.server.com'] = {}
  
topsecret = config['topsecret.server.com']
  
topsecret['Host Port'] = '50022'     # mutates the parser
  
topsecret['ForwardX11'] = 'no'  # same here
  
config['DEFAULT']['ForwardX11'] = 'yes'
  
with open('example.ini', 'w') as configfile:
  
   config.write(configfile)
  
[DEFAULT]
  
serveraliveinterval = 45
  
compression = yes
  
compressionlevel = 9
  
forwardx11 = yes
  
[bitbucket.org]
  
user = hg
  
[topsecret.server.com]
  
host port = 50022
  
forwardx11 = no
  hashlib模块
  加密操作
  subprocess模块
  logging
  提供了标准的日志接口。
  分5个级别
  debug() info()  warning()  error()  critical()
import logging  

  
logging.warning("user [alex] attempted wrong password more than 3 times")
  
logging.critical("server is down")
  

  
#输出
  
WARNING:root:user [alex] attempted wrong password more than 3 times
  
CRITICAL:root:server is down
  

  

  
import logging
  

  
logging.basicConfig(filename='example.log',level=logging.INFO)
  
logging.debug('This message should go to the log file')
  
logging.info('So should this')
  
logging.warning('And this, too')

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-552335-1-1.html 上篇帖子: python 网络编程 第六篇 下篇帖子: python中的编码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表