python笔记六之模块&操作数据库&写入excel
2018-05-15 15:35 等待燃亮 阅读(593) 评论(0) 编辑 收藏 举报一、模块、包
什么是模块?
模块实质上就是一个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'
$ 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.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 读 # #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)#当前操作系统的换行符 \n \r\n 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-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') #获取文件的大小 #不能超过2m print(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 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的