# -*- coding: utf-8 -*-
'''
1.定义:
模块用来从逻辑上组织python 代码(变量,函数,类,逻辑:实现一个功能),本质就是python 文件
2. 导入方法
import module1,module2
导入所有方法
import module1*
import 相当于导入一个文件
form import 相当于将导入模块的代码复制到当前文件中
as 关键字
from module import sayHello as hello
将sayHello 方法起一个别名‘hello’进行导入,调用直接 hello()
导入一个其他路径的python 的方法:
将 想导入的python文件的路径加入到sys.path 中
比如要导入 c:\test.py
sys.path.append("c:\")
os.path.abspath(__file__)
abspath(file) 获取文件的绝对路径
__file__ 当前文件
os.path.dirname(file) 获取file 所在目录
有一个包,结构如下
package_test
__init__.py
test1.py test1.py 中包含一个test 方法
我们导入包
import package_test
想调用test1中的test方法,可以这样调用:
修改 __init__.py ,加入 import test1
3.导入本质(路径搜索和搜索路径)
导入模块的本质是把python 文件解释一遍
导入一个包的本质 是执行该包下的__init__.py 文件
4.模块的分类
4.1 标准模块 : python 解释器自带的
4.2 开源模块(第三方模块)
4.3 自定义模块
'''
动态导入模块:
# -*- coding: utf-8 -*- ''' 已知一个模块,比如 lib.aa (aa中有Test 方法), 但是以字符串的形式给出 , 我们可以通过动态导入的方式将这个模块进行导入 ''' #导入 lib.aa mod = __import__("lib.aa") #调用Test mod.aa.Test() #建议使用下边的这种方式 import importlib lib = importlib.import_module('lib.aa') lib.Test()
time 模块:
1 ''' 2 time 3 4 datetime 5 6 7 时间有三种表现形式 8 1. 时间戳 : 就是一秒的形式体现 9 2. 元组 time.struct_time(tm_year=2017, tm_mon=11, tm_mday=2, tm_hour=17, tm_min=24, tm_sec=28, tm_wday=3, tm_yday=306, tm_isdst=0) 10 3. 格式化输出 2016-6-1 10:31:22 11 12 所以如果想获取当前时间是一年中的那一天, 可以将当前的时间转换成元组, 之后 .tm_yday 就可以了 13 ''' 14 import time 15 import datetime 16 from test.datetimetester import HOUR 17 18 19 # 获取时间戳 20 time.time() 21 22 #等待几秒 23 #time.sleep(2) 24 25 26 #把时间转换成 元组的形式 ,不传递参数则返回 UTC 的时间 27 time.gmtime() 28 29 #把时间转换成 元组的形式 , 返回本地的时间 30 time.localtime() 31 32 33 #将元组转换成时间戳 34 tuple = time.localtime() 35 time.mktime(tuple) 36 37 38 #将元组格式化输出 39 x = time.localtime() 40 f = time.strftime("%Y-%m-%d %H:%M:%S",x) 41 print(f) 42 43 44 45 #将格式化的字符串转化成元组 46 t = time.strptime(f, "%Y-%m-%d %H:%M:%S") 47 print(t) 48 49 50 #将 时间戳 转成 格式化字符串 51 m1 = time.ctime() 52 print(m1) 53 54 #将 元组 转成 格式化字符串 55 m = time.asctime() 56 print(m) 57 58 59 ''' 60 datetime------------------------- 61 ''' 62 63 #获取当前时间 64 d= datetime.datetime.now() 65 print("current time is : %s",d) 66 67 68 69 #获取几天前(或者几天后的)的时间 70 datetime.datetime.now()+datetime.timedelta(3) #3天后的时间 71 datetime.datetime.now()+datetime.timedelta(-3) #3天前的时间 72 h = datetime.datetime.now()+datetime.timedelta(hours = 3) #3小时后的时间 73 print(h)
random 模块:
# -*- coding: utf-8 -*- import random #随机1以内的浮点数 print(random.random()) #随机取一个区间的浮点数 print(random.uniform(1,3)) #随机1到3中的整数 print(random.randint(1,3)) print(random.randrange(1,3)) #不包含3 #从字符串(也可以传入一个列表)中随机获取一个值 print(random.choice("hello")) #在一个字符串(也可以是一个列表)中随机获取多个值 print(random.sample("hello",2)) #将一个列表打乱 L1 = [1,2,3,4,5,6,7,8,9] random.shuffle(L1) print(L1)
os 模块:
# -*- coding: utf-8 -*- ''' os模块, 主要是对操作系统功能的调用 ''' import os #获取当前的操作目录 print(os.getcwd()) #切换目录 os.chdir(r"C:installEclipse_lunaeclipse") #如果有转译字符,可以加r os.chdir(r"c:Users") print(os.getcwd()) #返回当前目录 print(os.curdir) #获取当前目录的父目录 print(os.pardir) #递归创建目录 #os.makedirs(r"c:ac") #不 递归创建目录 #os.mkdir(r"c:") #递归删除目录 #os.removedirs(r"c:ac") #删除目录 #os.rmdir("c:") #列出目录 .代表当前目录 print(os.listdir(".")) #重命名 #os.renames("old", "new") #获取当前操作系统的分隔符 print(os.sep) #输出当前系统的终止符 print(os.linesep) #环境变量中路径分隔符 print(os.pathsep) #获取环境变量 print(os.environ) #当前系统 print(os.name) #执行系统命令 os.system("dir") #分割路径 print(os.path.split(r"c:user est")) #获取文件路径 print(os.path.dirname(r"c:dea.txt")) #获取文件名 print(os.path.basename(r"c:dea.txt")) #判断文件是否存在 print(os.path.exists(r"c:a")) #判断是否是绝对路径 print(os.path.abspath(r"c:a")) #判断是否是一个文件 print(os.path.isfile(r"c:a.txt")) #判断是否是一个目录 print(os.path.isdir(r"c: ")) #将多个路径组合返回 print(os.path.join("c:\","a","b.txt"))
sys 模块:
#程序正常退出 # sys.exit(0) #获取输入的参数, 比如运行一个脚本 python test.py 1 2 3 , 将会输出 test.py,1,2,3 sys.argv #获取python 版本信息 print(sys.version)
shutil 模块:
# -*- coding: utf-8 -*- ''' shutil 模块主要是对文件进行复制等操作的模块 ''' import shutil f1 = open("test") f2 = open("test2","w") #复制文件 shutil.copyfileobj(f1, f2) #输入文件名直接复制 shutil.copyfile("test2", "test3") #递归的复制文件 shutil.copytree(r"c:a", r"c:") #递归删除 shutil.rmtree(r"c:") #移动文件 shutil.move(r"c:a", "c:\") ''' shutil.make_archive(base_name, format, root_dir, base_dir, verbose, dry_run, owner, group, logger) base_name: 压缩包的文件名,也可以是压缩包的路径,只是文件名的时候保存到当前路径,否则保存至指定路径 aa => 保存到当前路径 c: estaa =>保存到c: est路径 format:压缩的种类:zip、tar、bztar、gztar root_dir: 要压缩的文件夹路径(默认是当前路径) owner:用户,默认是当前用户 group:组,默认是当前组 logger:用于记录日志,通常是logging.Logger对象 ''' shutil.make_archive("test","zip",r"C:")
shelve 模块:
''' shelve 模块是一个简单的k,v 将内存的数据通过文件持久化的模块,可以持久化任何pickle 可支持的python 数据格式 ''' import shelve d = shelve.open("test4") class test(): pass t = "shelve str" t2=5 t3 = test() #持久化字符串 d["str"] = t #持久化int d["int"] = t2 #持久化类 d["class"] = t3 d.close() ''' 读取 ''' f = shelve.open("test4") str = f.get("str") print(str)