模块:模块其实就是一个Python文件
一、三种模块
1、标准模块、标准包
#python自带的这些模块,直接import就能用的
import string,random,datetime,os,json
2、第三方模块,别人写好的一些模块,你要安装之后才可以用
1、傻瓜式的:pip install pymysql
(1)没有pip命令的怎么搞:
1、pycharm里面点python console
2、找到python安装目录
3、然后把安装目录下的scripts目录,加入到环境变量里面即可
ps:环境变量在PATH里面加
(2)Unknown or unsupported command 'install' 出来这个问提怎么解决
1、打开 C:strawberryperlin
2、把这个目录下的pip 都改成其他的名字,这个对其他的没有影响
2、手动安装
(1)、whl结尾的安装包
pip install redis-2.10.6-py2.py3-none-any.whl
(2)、.tar.gz结尾的安装包
1、解压这个压缩包
2、进入到这个解压之后的文件夹里面
3、在命令行里面运行 python setup.py install
3、自己写的python文件
二、导入模块
1、python导入模块的时候的顺序:
(1)从当前目录下找需要导入的python文件
(2)从python的环境变量中找 sys.path
2、导入模块的实质:就是这这个python文件从头到尾执行一遍
#两种方式是一样的 import test nhy.my() print( test.name) from test import my,name, my() print(name)
Random模块:
import random,string print(string.printable)#代表数字、字母、特殊字符 print (random.randint(1,10))#随机取整数 print(round(random.uniform(1,99),2))#随机小数 print(random.choice([1,2,3,4,5]))#只能随机取1个元素 print(random.sample(string.printable,5))#随机取N个元素,返回的是list #洗牌 pickts=['A','B',"C","D"] random.shuffle(pickts)#只能传list print(pickts) #结果:
OS模块:
1、常用的OS模块方法:
os.listdir('e:\') #列出目录下所有的文件和文件夹 os.remove() #删除文件 os.rename(old,new) #重命名 print(os.sep)#当前操作系统的路径分隔符 # # res = os.system('ipconfig') #执行操作系统命令的,但是获取不到结果 #res = os.popen('ipconfig').read() #可以获取到命令执行的结果 # print(os.path.abspath(__file__))#获取绝对路径 #print(os.path.dirname("e:\syz\ly-code"))#获取父目录,获取它的上一级目录 # print(os.path.exists(r"E:syzly-codeday6")) #判断文件或者目录是否存在 print(os.path.isfile("xiaohei.py")) #判断是否是一个文件,1、文件要存在2、必须是一个文件 print(os.path.isdir("e:\syz1"))#是否是一个路径,目录是否存在 size = os.path.getsize('x.py') #获取文件的大小 os.path.join("root",'hehe','mysql','a.sql') #拼接路径 for abs_path,dir,file in os.walk(r'e: hy'): print(abs_path,dir,file) # abs_path 当前循环的绝对路径 # dir 目录下面所有的文件夹 [ ] # file 目录下面的所有文件 []
其他方法:
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"))#递归创建文件夹,父目录不存在时创建父目录 # print(os.mkdir("zll/huangrong"))#创建文件夹 #makedirs 创建文件夹的时候,如果父目录不存在会自动帮你创建父目录 # 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("e:\syz\ly-code\a.txt"))#获取最后一级,如果是文件显示文件名,如果是目录显示目录名 # print(os.path.exists(r"E:syzly-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'))#拼接成一个路径 # for abs_path,dir,file in os.walk(r'E:syzly-codeday6'): #获取目录下内容 os.listdir() # # # print(abs_path,dir,file) # abs_path 当前循环的绝对路径 # dir 目录下面所有的文件夹 [ ] # file 目录下面的所有文件 []
小练习:
# 把双数日期的日志,里面给随便写点东西。 # 1、获取到log目录下面的所有文件 os.walk() # 2、根据文件名来判断,是否是双数日期 ,分割字符串,取到日期 # 3、12%2==0 # 4、打开这个文件 open() import os,datetime for abs_path,dir,file in os.walk(r'E:自己的文件夹自动化day6logs'): for f in file: day = f.split('.')[0].split('-')[-1] if int(day)%2==0: file_name = os.path.join(abs_path,f)#拼接绝对路径 open(file_name,'a+',encoding='utf-8').write('写东西')#
时间模块:
import time #时间戳 从unix 元年到现在过了多少秒 #格式化好的时间 print(time.time())#1525268607.2107282 #time.sleep(1)#停止多少秒时间 print(time.strftime('%Y-%m-%d %H:%M:%S'))#2018-05-02 21:43:27 #先转成时间元组 print(time.gmtime())#默认取得是标准时区的时间 ## time.struct_time(tm_year=2018, tm_mon=5, tm_mday=2, tm_hour=13, tm_min=43, tm_sec=27, tm_wday=2, tm_yday=122, tm_isdst=0) print(time.localtime())#默认取得是当前时区的时间 #time.struct_time(tm_year=2018, tm_mon=5, tm_mday=2, tm_hour=21, tm_min=43, tm_sec=27, tm_wday=2, tm_yday=122, tm_isdst=0) s=time.localtime(1514198608) print(s)#time.struct_time(tm_year=2017, tm_mon=12, tm_mday=25, tm_hour=18, tm_min=43, tm_sec=28, tm_wday=0, tm_yday=359, tm_isdst=0)
模块练习:
def timestamp_to_fomat(timestamp=None,format='%Y-%m-%d %H:%M:%S'): if timestamp: time_tuple=time.localtime(timestamp) res=time.strftime(format,time_tuple) else: res=time.strftime(format)#默认取当前时间 return res print(timestamp_to_fomat())#2018-05-02 22:00:33 #print(timestamp_to_fomat('2018-4-21 16:20:20')) #2018-4-21 tp=time.strptime('2018-04-21','%Y-%m-%d') print(tp)#把格式化好的时间转成时间元组time.struct_time(tm_year=2018, tm_mon=4, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=111, tm_isdst=-1) print(time.mktime(tp))#把元组转成时间戳1524240000.0 def strToTimestamp(str=None,format='%Y%m%d%H%M%S'): if str:#如果传了时间的话 tp=time.strptime(str,format)#转成时间元组 res=time.mktime(tp)#在转成时间戳 else: res=time.time()#默认取当前的时间戳 return int(res) strToTimestamp() print(strToTimestamp())#1525269681 print(strToTimestamp('2018421162345'))#1524299025 import datetime print(datetime.datetime.today())#2018-05-02 22:01:21.841973 print(datetime.date.today())#2018-05-02获取今天日期 res=datetime.date.today()+datetime.timedelta(days=-5)#2018-04-27前五日日期 print(res)#2018-04-27前五日日期 res=datetime.date.today()+datetime.timedelta(days=5)#后五天日期2018-05-07 print(res) res=datetime.date.today()+datetime.timedelta(days=1,minutes=5,seconds=5,weeks=5) print(res)#2018-06-07 print(res.strftime('%Y-%m-%d'))#2018-06-07
制作带有时间的日志文件:
import os,datetime dirs = ['tomcat','nginx','apache','python','app','android','ios'] os.chdir(r'E:自己的文件夹自动化day6logs') base_path = r'E:自己的文件夹自动化day6logs' for d in dirs: p = os.path.join(base_path,d) os.mkdir(p) os.chdir(p) for i in range(1,10): t = datetime.date.today()+datetime.timedelta(-i) name = '%s_%s.log'%(d,t) open(name,'w')
sys模块:
#3、操作数据库 import sys # print(sys.platform) #判断操作系统 # #python的环境变量 # sys.path.append(r'E:syzly-codeday5') # sys.path.insert(0,r'E:syzly-codeday5') # print(sys.path)
print(sys.argv) #用来获取命令行里面运行python文件的时候传入的参数
sys.argv:
import sys import os command = sys.argv print(command) if len(command)>1: cmd1 = command[1] if cmd1=='--help': print('这个是帮助文档' '这个python文件是用来说明sys.argv的作用') elif cmd1=='os': print('当前的操作系统是%s'%sys.platform) else: print('输入命令有误') else: print('运行python的时候要传入一个参数' 'e.g ' 'python xx.py install ')