一、模块、包
什么是模块?
模块实质上就是一个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的