zoukankan      html  css  js  c++  java
  • python笔记六之模块&操作数据库&写入excel

    一、模块、包

    什么是模块?

    模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称。

    什么是包?

    包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件,包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果你想导入其他目录下的模块,那么这个目录必须是一个包才可以导入。

    导入模块

       import module #导入模块
       from module import *  #导入该模块中的所有方法,慎用
       from module import fun as xx_fun #导入指定的方法,然后起别名
       from module import fun1,fun2,fun3 #导入模块下的多个方法
       import module,实际上就是把该模块的代码赋值给模块名,也就是module.py里面所有的代码,赋值给了module这个变量,如果是from module import fun,就是把module打开,把module里面的fun方法拿过来使用

    导入模块的本质,就是把python文件拿过来从头到尾执行一次。

    使用包中的模块需要在__init__.py文件中from . import xxx

    模块分类:

    标准库:python内置的
    开源模块:第三方
    自定义模块:自己写的

    二、模块的安装

    Python第三方模块非常多,当需要实现某个功能时先百度一下,看是否能找到相应模块
    方法1: 单文件模块
    直接把文件拷贝到 $python_dir/Lib

    方法2: 多文件模块,带setup.py

    下载模块包(压缩文件zip或tar.gz),进行解压,CMD->cd进入模块文件夹(或者直接在模块文件夹下,shift+鼠标右键,选择“在此处打开命令窗口”),执行:
    python setup.py install

    方法3:easy_install 方式

     先下载ez_setup.py,运行python ez_setup 进行easy_install工具的安装,之后就可以使用easy_install进行安装package(文件名称、资源的URL、.egg文件(python egg文件)来下载安装文件)
      easy_install packageName
      easy_install package.egg

    方法4:pip 网络搜索自动安装

    先进行pip工具的安裝:easy_install pip(pip 可以通过easy_install 安裝,而且也会装到 Scripts 文件夹下D:Python2.7Libsite-packages)

    安裝:pip install PackageName

    pip常用命令
    列出安装的packages:pip freeze
    安装特定版本的package:通过使用==, >=, <=, >, <来指定一个版本号
    $ pip install 'Markdown<2.0'
    $ pip install 'Markdown>2.0,<2.0.3'
    升级包到当前最新的版本,可以使用-U或者--upgrade:
    升级包pip install -U Markdown
    卸载包:pip uninstall Markdown
    查询包:pip search "Markdown"

    方法5:.whl文件pip 方式

    下载对应模块.whl文件,在CMD->cd命令下进入到.whl文件所在目录,如果pip目录未添加到环境变量,最好把.whl文件放置到pip.exe所在目录(D:Python2.7Scripts)。

    安装: pip install 包名.whl

    方法6:.exe文件自定义安装

    下载对应版本的exe安装文件,如numpy-1.9.2-win32-superpack-python2.7.exe和mlpy-3.5.0.win32-py2.7.exe

    安装:打开自动安装即可

    三、常用的标准模块(os,sys,time,datetime、hashlib

    1、OS模块

    import os
    #对操作系统的一些操作
    print(os.getcwd())#取当前工作目录
    os.chmod("x.py",2)#给文件/目录加权限,对Windows的下面不好使
    # 1  执行
    # 2 写
    # 4 读
    # #chmod
    print(os.chdir("../day5"))#更改当前目录
    print(os.getcwd())
    #
    print(os.makedirs("nhy/python"))#递归创建文件夹,父目录不存在时创建父目录
    #makedirs 创建文件夹的时候,如果父目录不存在会自动帮你创建父目录
    print(os.mkdir("zll/huangrong"))#创建文件夹  
    print(os.removedirs("nhy/python"))#递归删除空目录
    print(os.rmdir("test2"))#删除指定的文件夹
    #只能删除空目录
    os.remove("test2")#只能删除文件
    os.rmdir('test2') #只能删文件夹
    
    
    print(os.listdir('e:\'))#列出一个目录下的所有文件
    
    os.rename("test","test1")#重命名
    print(os.stat("x.py"))#获取文件信息
    
    print(os.sep)#当前操作系统的路径分隔符 #
    
    day5+os.sep+x.py
    print(os.linesep)#当前操作系统的换行符  
      
    
    print(os.pathsep)#当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
    print(os.environ)#当前系统的环境变量
    print(os.name)#当前系统名称  Windows系统都是nt linux都是posix
    res = os.system('ipconfig')  #执行操作系统命令的,但是获取不到结果
    res = os.popen('ipconfig').read()  #可以获取到命令执行的结果
    __file__ #获取到当前文件的绝对路径
    print(os.path.abspath(__file__))#获取绝对路径
    print(os.path.split("/usr/hehe/hehe.txt"))#分割路径和文件名
    
    print(os.path.dirname("e:\syz\ly-code"))#获取父目录,获取它的上一级目录
    print(os.path.basename("G:\syz-code\day6\x.py"))# 运行结果:x.py;  获取最后一级,如果是文件显示文件名,如果是目录显示目录名
    print(os.path.exists(r"G:syz-codeday6"))#目录/文件是否存在
    print(os.path.isabs("../day5"))#判断是否是绝对路径
    print(os.path.isfile("xiaohei.py"))
    # 判断是否是一个文件,1、文件要存在2、必须是一个文件
    print(os.path.isdir("e:\syz1"))#是否是一个路径,目录是否存在
    size = os.path.getsize('x.py') #获取文件的大小
    #不能超过2m
    print(size)
    
    print(os.path.join("root",'hehe','mysql','a.sql'))#运行结果: roothehemysqla.sql   拼接成一个路径
    
    for abs_path,dir,file in os.walk(r'G:syz-codeday6logs'): #获取目录下内容  os.listdir()
       print(abs_path,dir,file)
        
    #  abs_path 当前循环的绝对路径
    #  dir 目录下面所有的文件夹 并保存到一个list[ ]
    #  file 目录下面的所有文件 并保存到一个list []

    2、sys模块

    import sys
    # print(sys.platform)  #判断操作系统
    print(sys.path)
    #python的环境变量
    # sys.path.append(r'E:syzly-codeday5')#将day5这个文件夹加入python的环境变量
    # sys.path.insert(0,r'E:syzly-codeday5')#将day5这个文件夹加入python的环境变量的第一个位置上,可加快执行效率
    # print(sys.path)# 输出python的环境变量、python的安装路径,第一个字符串是脚本当前的路径;
                    #  程序向sys.path添加的目录只会在此程序的生命周期之内有效,其他所有的对sys.path的动态操作也是如此。
    
    print(sys.argv)  #用来获取命令行里面运行python文件的时候传入的参数,返回List,第一个元素是程序本身路径 

    3、时间模块

    import time
    
    #1、时间戳  从unix元年到现在过了多少秒
    #2、格式化好的时间
    
    #先转成时间元组
    
    # print(time.time())  #获取当前时间戳
    # time.sleep(10)
    # today = time.strftime('%Y%m%d%H%M%S')#不传入时间元组时,将当前时间的时间戳转化为格式化时间
    # print(today)
    
    print(time.gmtime()) #默认取的是标准时区的时间元组
    s=time.localtime(1514198608)  #不传入时间戳时,将当前时区的时间戳转换为时间元组
    print(time.strftime('%Y-%m-%d %H:%M:%S',s))#将时间元组S按照'%Y-%m-%d %H:%M:%S'的格式转换为格式化时间,若不传入s,
                                                  # 则默认取当前时间元组转换为格式化时间
    #时间戳转换时间元组
    # 1、时间戳转成时间元组  time.localtime()
    # 2、再把时间元组转成格式化的时间time.strftime()
    def timestamp_to_fomat(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
        #1、默认返回当前格式化好的时间
        #2、传入时间戳的话,把时间戳转换成格式化好的时间,返回
        if timestamp:
            time_tuple = time.localtime(timestamp)
            res = time.strftime(format,time_tuple)
        else:
            res = time.strftime(format)  #默认取当前时间
        return res
    
    # 2018-4-21
    # tp = time.strptime('2018-4-21','%Y-%m-%d')  #把格式化好的时间转成时间元组的
    # print(time.mktime(tp))  #把时间元组转成时间戳
    def strToTimestamp(str=None,format='%Y%m%d%H%M%S'):
        # 20180421165643
        #默认返回当前时间戳
        if str: #如果传了时间的话
            tp = time.strptime(str,format) #格式化好的时间,转成时间元组
            res = time.mktime(tp)#再转成时间戳
        else:
            res = time.time()  #默认取当前的时间戳
        return int(res)
    
    import datetime
    print(datetime.datetime.today()) #获取当前时间,精确到秒
    print(datetime.date.today()) #精确到天
    res = datetime.datetime.today()+datetime.timedelta(days=1,minutes=5,seconds=5,weeks=5)#获取1天5分钟5秒5周后的日期
    print(res.strftime('%Y-%m-%d'))

    运行结果:

    time.struct_time(tm_year=2018, tm_mon=5, tm_mday=14, tm_hour=4, tm_min=15, tm_sec=27, tm_wday=0, tm_yday=134, tm_isdst=0)
    2017-12-25 18:43:28
    2018-05-14 12:15:27.381012
    2018-05-14
    2018-06-19

    4、hashlib加密模块

    import hashlib
    m = hashlib.md5()
    # bytes
    passwd = 'NHY_*&^_1982343532'
    # passwd.encode() #把字符串转成bytes类型
    m.update(passwd.encode())   #不能直接对字符串加密,要先把字符串转成bytes类型
    print(m.hexdigest())
    #md5加密是不可逆,网上解密的方法是通过撞库实现
    #撞库
    # befor       after
       # nhy123  81fb61ce98e508df8dbe8da07ad9acfc
    
    def my_md5(str):
        import hashlib
        new_str = str.encode() #把字符串转成bytes类型
        # new_str = b'%s'%str  #把字符串转成bytes类型
        m = hashlib.md5()  #实例化md5对象
        m.update(new_str)  #加密
        return m.hexdigest()  #获取结果返回
    
    print(my_md5('joanzhang'))

    运行结果:

    9a50a5b071095b915b0497544f841a5f
    49929b73bfff23dfc8c8422333e2ee6a

     四、操作MySQL

    import pymysql
    # 1、连上数据库  账号、密码 ip 端口号 数据库
    #2、建立游标
    #3、执行sql
    #4 、获取结果
    # 5、关闭游标
    #6、连接关闭
    coon = pymysql.connect(
        host='118.24.3.40',user='jxz',passwd='123456',
        port=3306,db='jxz',charset='utf8'
        #port必须写int类型,
        #charset这里必须写utf8
    )
    cur = coon.cursor() #建立游标
    # cur.execute('select * from stu;')#执行sql语句
    cur.execute('insert into stu (id,name,sex) VALUE (1,"牛寒阳","女");')
    # delete update insert
    coon.commit()  #必须得commit
    res = cur.fetchall()  #获取所有返回的结果
    print(res)
    cur.close()#关闭游标
    coon.close()#关闭连接

    五、写Excel

    python写入Excel 需安装xlwt模块,直接在命令行下pip安装即可

     import xlwt
            title = [
                '姓名','年龄','性别','分数'
            ]
            stus = [['mary',20,'',89.9],['mary',20,'',89.9],['mary',20,'',89.9],['mary',20,'',89.9]]
            #新建一个excel对象
            wbk = xlwt.Workbook()
            #添加一个名为'stu'的sheet页
            sheet = wbk.add_sheet('stu')
            for i in  range(len(title)):#写入表头
                sheet.write(0,i,title[i])#写入每行,第一个值是行,第二个值是列,第三个是写入的值
            row = 1 #
            for i in stus:
                col = 0#
                for j in i:
                    sheet.write(row,col,j)#循环写入每行数据
                    col+=1
                row+=1
            #保存数据到‘test.xls’文件中
            wbk.save('test.xls')#保存excel必须使用后缀名是.xls的,不是能是.xlsx的
  • 相关阅读:
    paip.提高开发效率自动数据库SQL备份
    paip.提升开发效率增量备份项目文件
    paip.提升开发效率使用拼音
    paip.asp vbs代码的排版格式化
    paip.asp vbs的代码折叠代码结构查看
    paip.提升用户体验文件查找
    poj3026
    poj3020
    poj1182
    POJ典型算法例题题号
  • 原文地址:https://www.cnblogs.com/jojoan/p/9035071.html
Copyright © 2011-2022 走看看