博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python笔记六之模块&操作数据库&写入excel
阅读量:4930 次
发布时间:2019-06-11

本文共 7159 字,大约阅读时间需要 23 分钟。

一、模块、包

什么是模块?

模块实质上就是一个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.7\Lib\site-packages) 安裝:pip install PackageName pip常用命令 列出安装的packages:pip freeze 安装特定版本的package:通过使用==, >=, <=, >, 
<来指定一个版本号 $ pip install 'markdown<2.0' '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.7\Scripts\)。 安装: 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 读# #chmodprint(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.pyprint(os.linesep)#当前操作系统的换行符  \n  \r\nprint(os.pathsep)#当前系统的环境变量中每个路径的分隔符,linux是:,windows是;print(os.environ)#当前系统的环境变量print(os.name)#当前系统名称  Windows系统都是nt linux都是posixres = 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-code\day6"))#目录/文件是否存在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') #获取文件的大小#不能超过2mprint(size)print(os.path.join("root",'hehe','mysql','a.sql'))#运行结果: root\hehe\mysql\a.sql   拼接成一个路径for abs_path,dir,file in os.walk(r'G:\syz-code\day6\logs'): #获取目录下内容  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:\syz\ly-code\day5')#将day5这个文件夹加入python的环境变量# sys.path.insert(0,r'E:\syz\ly-code\day5')#将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 datetimeprint(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:282018-05-14 12:15:27.3810122018-05-142018-06-19

4、hashlib加密模块

import hashlibm = hashlib.md5()# bytespasswd = 'NHY_*&^_1982343532'# passwd.encode() #把字符串转成bytes类型m.update(passwd.encode())   #不能直接对字符串加密,要先把字符串转成bytes类型print(m.hexdigest())#md5加密是不可逆,网上解密的方法是通过撞库实现#撞库# befor       after   # nhy123  81fb61ce98e508df8dbe8da07ad9acfcdef 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'))

运行结果:

9a50a5b071095b915b0497544f841a5f49929b73bfff23dfc8c8422333e2ee6a

 四、操作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 insertcoon.commit()  #必须得commitres = 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的

 

转载于:https://www.cnblogs.com/jojoan/p/9035071.html

你可能感兴趣的文章
T3 光
查看>>
搭建交叉调试环境 arm-linux-gdb配合gdbserver
查看>>
使用Jsoup 抓取页面的数据
查看>>
使用命令批量对文件中出现的字符串进行替换
查看>>
C#获取URL参数值
查看>>
oracle extract 函数简介
查看>>
JVM——参数设置、分析
查看>>
Struts 框架 之 文件上传下载案例
查看>>
【重走Android之路】【路线篇(二)】知识点归纳
查看>>
graphviz入门
查看>>
JAVA编码(37)—— Java字符串转换为MAP对象
查看>>
jquery.validate.js 一个jQuery验证格式控件
查看>>
有表格的九九乘法表
查看>>
WPF 4 DataGrid 控件(自定义样式篇)
查看>>
改善C#程序的建议1:非用ICloneable不可的理由
查看>>
PHP的错误机制总结
查看>>
window.location
查看>>
C#实现万年历(农历、节气、节日、星座、星宿、属相、生肖、闰年月、时辰)
查看>>
使用Flex图表组件
查看>>
官网分析(英雄传奇)(如何设计网站前端)
查看>>